首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何摆脱"IndexError: string index out of range“

如何摆脱"IndexError: string index out of range“
EN

Stack Overflow用户
提问于 2021-05-18 13:30:23
回答 2查看 47关注 0票数 0

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

代码语言:javascript
复制
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")

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

代码语言:javascript
复制
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_train数据中的0和1索引是有效的。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-18 13:39:45

将一个字符串传递给函数

代码语言:javascript
复制
getNeighbors("coa_train")

但它应该是变量

代码语言:javascript
复制
getNeighbors(coa_train)

以字符串为参数,循环

代码语言:javascript
复制
for pair in data:

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

票数 3
EN

Stack Overflow用户

发布于 2021-05-18 14:00:51

您正在将字符串参数传递给函数

代码语言:javascript
复制
coa_neighbors= getNeighbors("coa_train")

所以你的,

代码语言:javascript
复制
for pair in data:

遍历字符串中的单个字符,这就是为什么它会给出索引超出范围的错误。试试这个..。

代码语言:javascript
复制
coa_neighbors= getNeighbors(coa_train)

我希望它能起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67580451

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档