Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么从.txt文件中读取值后会出现KeyError?_Python_Vertex_Keyerror_Degrees - Fatal编程技术网

Python 为什么从.txt文件中读取值后会出现KeyError?

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

所以我试图将一个已经运行的程序改为从一个.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)

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删除嵌套帮助很大,谢谢!