所以我试图改变已经工作的程序来读取.txt文件,但只有我看到的是KeyError。
#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行,在 outdegree [x] + = 1
KeyError:1
当我使用#V
和#E
的值以及代码的开头运行它时,它运行完全正常。
答案 0 :(得分:0)
好像是评论的' V'上面有形状
([1,2,3,4,5])
当我在我的控制台上运行它时,它会被读入并解释到内部列表,变为:
[1,2,3,4,5]
但是,请注意,在您的打印语句中,A被写为单个元组的列表。嵌套是不同的。
[(1, 2, 3, 4, 5)]
当你遍历A的第一个维度时,你只会按如下方式实例化hashmap:
{(1, 2, 3, 4, 5): 0}
我的猜测是预期的行为是{1: 0, 2:0, ...}
。我建议您使用标准数据格式(如tsv / csv)来简化数据加载。其次,如果你改变括号的顺序,你应该得到你想要的答案