如何摆脱“索引器:字符串索引超出范围”

2024-06-28 19:48:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图在图形网络中查找邻居节点。我已经在coa_train中导入了数据,现在正在尝试查找邻居节点


import matplotlib.pyplot as plt
from math import isclose
from sklearn.decomposition import PCA
import os
import networkx as nx
import numpy as np
import pandas as pd
#from stellargraph import StellarGraph, datasets
#from stellargraph.data import EdgeSplitter
from collections import Counter
import multiprocessing
#from IPython.display import display, HTML
from sklearn.model_selection import train_test_split

%matplotlib inline

def readTrainingData(tr):
    trainingData = []
    with open(tr) as f:
        for line in f:
            a1, a2 = line.strip().split()
            trainingData.append((a1, a2))
    return trainingData
coa_train = readTrainingData("training.txt")

coa_train

[('8193', '16056'),
 ('24578', '21968'),
 ('24578', '18297'),
 ('24578', '16770'),
 ('24578', '17038'),
 ('8195', '2072'),
 ('8195', '20568'),

----------------------
import collections

def getNeighbors(data):
    
    neighbors=collections.defaultdict(set)
    
    for pair in data:
        
        neighbors[pair[0]].add(pair[1])
        
        neighbors[pair[1]].add(pair[0])
        
        

        return neighbors

coa_neighbors= getNeighbors("coa_train")
  

在这里,我得到一个错误,如:

IndexError                                Traceback (most recent call last)
<ipython-input-41-c775c56181f7> in <module>
     13         return neighbors
     14 
---> 15 coa_neighbors= getNeighbors("coa_train")
     16 

<ipython-input-41-c775c56181f7> in getNeighbors(data)
      5     for pair in data:
      6 
----> 7         neighbors[pair[0]].add(pair[1])
      8 
      9         neighbors[pair[1]].add(pair[0])

IndexError: string index out of range

我看不出这个错误的任何原因,因为我相信coa_列车数据中的0和1索引是有效的


Tags: infromimportaddfordatareturnas
2条回答

将字符串传递到函数中

getNeighbors("coa_train")

但它应该是变量

getNeighbors(coa_train)

使用字符串作为参数,循环

for pair in data:

将为您提供单个字符。对于单个字符,您不能再执行pair[1]

您正在向函数传递字符串参数

coa_neighbors= getNeighbors("coa_train")

所以你,

for pair in data:

遍历字符串中的单个字符,这就是它给出索引超出范围错误的原因。试试这个

coa_neighbors= getNeighbors(coa_train)

我希望它能起作用

相关问题 更多 >