python - 如何摆脱“IndexError:字符串索引超出范围”
问题描述
我正在尝试在图形网络中查找邻居节点。我已经在 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_train 数据中的 0 和 1 索引是有效的。
解决方案
您将字符串传递给函数
getNeighbors("coa_train")
但它应该是变量
getNeighbors(coa_train)
使用字符串作为参数,循环
for pair in data:
会给你单个字符。而只有一个角色,你就不能再做pair[1]
任何事情了。
推荐阅读
- git - “git push --mirror”无法推送一些参考,其他参考是否被正确推送?
- ms-access-2013 - 根据组合和文本框输入填充文本框
- javascript - 如何在javascript中使用数组格式的json数据更新作为变量传递的json键?
- agora.io - Agora.io 安全令牌生成无效(Golang)
- laravel - Laravel 7 - 这条路线在这里很完美,但没有返回视图
- html - 删除行之间的边距
- axapta - 使用外部连接表保存表单要求填写外部表的必填字段
- regex - 是否可以在 Fluent Bit 中为同一输入编写多个正则表达式?
- javascript - 如何使用 jquery 读取 csv 文件并将数据打印到数组中
- django - Amazon Linux 2 AMI 上的命令 01_migrate 失败