所以我有以下文本作为输入文件:
A B 1
A C 2
B C 1
B D 3
B E 2
C D 1
C E 2
D E 4
D F 3
E F 3
我想将所有这些值存储在 python 的嵌套字典中:
{ 'A': {'B': 1, 'C': 2},
'B': {'C': 1, 'D': 3, 'E': 2},
'C': {'D': 1, 'E': 2},
'D': {'E': 4, 'F': 3},
'E': {'F': 3} }
这是我的代码,它正在读取输入文件并尝试将其转换为嵌套字典
inputfile = open("input.txt", "r")
lines = inputfile.readlines()
edges = []
for line in lines:
edges.append(line.split())
d = {}
nn={}
for i in edges:
nn.update({i[1]:i[2]})
d[i[0]] = nn
index+=1
print(d)
这是我的错误输出
{'A': {'B': '1', 'C': '1', 'D': '1', 'E': '4', 'F': '3'}, 'B': {'B': '1', 'C': '1', 'D': '1', 'E': '4', 'F': '3'}, 'C': {'B': '1', 'C': '1', 'D': '1', 'E': '4', 'F': '3'}, 'D': {'B': '1', 'C': '1', 'D': '1', 'E': '4', 'F': '3'}, 'E': {'B': '1', 'C': '1', 'D': '1', 'E': '4', 'F': '3'}}
我正在寻找一个正确的 if else 条件,该条件将在键相同时更新 dict 项目,如果键不同则追加。提前致谢。
你可以做:
di={}
with open(fn) as f_in:
for line in f_in:
li=line.split()
di.setdefault(li[0],{})[li[1]]=li[2]
>>> di
{'A': {'B': '1', 'C': '2'}, 'B': {'C': '1', 'D': '3', 'E': '2'}, 'C': {'D': '1', 'E': '2'}, 'D': {'E': '4', 'F': '3'}, 'E': {'F': '3'}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句