Python 为什么从.txt文件中读取值后会出现KeyError?
所以我试图将一个已经运行的程序改为从一个.txt文件读取,但我只看到一个键错误Python 为什么从.txt文件中读取值后会出现KeyError?,python,vertex,keyerror,degrees,Python,Vertex,Keyerror,Degrees,所以我试图将一个已经运行的程序改为从一个.txt文件读取,但我只看到一个键错误 #V = ([1,2,3,4,5]) #E = ([(1,2),(1,3),(2,3),(3,5),(5,4)]) import ast with open('v.txt') as V: A = ast.literal_eval(V.read()) with open('e.txt') as E: B = ast.literal_eval(E.read()) print(A) print(B) inde
#V = ([1,2,3,4,5])
#E = ([(1,2),(1,3),(2,3),(3,5),(5,4)])
import ast
with open('v.txt') as V:
A = ast.literal_eval(V.read())
with open('e.txt') as E:
B = ast.literal_eval(E.read())
print(A)
print(B)
indegree = {}
outdegree = {}
for x in A:
indegree[x] = 0
outdegree[x] = 0
for x,y in B:
outdegree[x] += 1
indegree[y] += 1
for x in A:
print("Outdegree for vertex", x,"=", outdegree[x])
print("Indegree for vertex", x,"=", indegree[x])
输出为:
[(1,2,3,4,5)]
[(1,2)、(1,3)、(2,3)、(3,5)、(5,4)]
第21行,在
出度[x]+=1
关键错误:1
当我使用
#V
和#E
中的值以及代码的开头运行它时,它运行得非常好。上面注释的“V”似乎具有相同的形状
([1,2,3,4,5])
当我在控制台上运行它时,它被读入并解释到内部列表中,成为:
[1,2,3,4,5]
但是,请注意,在print语句中,A被写为单个元组的列表。筑巢是不同的
[(1, 2, 3, 4, 5)]
当您迭代A的第一个维度时,您将只实例化hashmap,如下所示:
{(1, 2, 3, 4, 5): 0}
我猜预期的行为是
{1:0,2:0,…}
。我建议您使用标准数据格式(如tsv/csv)来简化数据加载。第二,如果你切换括号的顺序,你应该得到你想要的答案。我看你的代码没有任何问题。在循环A
之后,打印indegree
或outdegree
,你会看到它们包含类似{(1,2,3,4,5):0}
-一个条目,所有内容都在一个元组中。您需要在v.txt中删除一层嵌套,或者在A[0]
上循环,而不是A
@jasonharper删除嵌套帮助很大,谢谢!