我正在尝试制作此文件:
c;f
b;d
a;c
c;e
d;g
a;b
e;d
f;g
f;d
变成这样的字典:
{'e': {'d'}, 'a': {'b', 'c'}, 'd': {'g'}, 'b': {'d'}, 'c': {'f', 'e'}, 'f': {'g', 'd'}}.
我现在使用的代码如下:
def read_file(file : open) -> {str:{str}}:
f = file.read().rstrip('\n').split()
answer = {}
for line in f:
k, v = line.split(';')
answer[k] = v
return answer
但这给了我 {'f': 'g', 'a': 'c', 'b': 'd', 'e': 'd', 'c': 'e', 'd': 'g'}
我该如何解决?
字典会覆盖上一个键,在此处使用defaultdict
>>> import collections
>>> answer = collections.defaultdict(set)
>>> for line in f:
... k, v = line.split(";")
... answer[k].add(v)
...
>>> answer
defaultdict(<class 'set'>, {'b': {'d'}, 'd': {'g'}, 'f': {'d', 'g'}, 'e': {'d'}, 'a': {'c', 'b'}, 'c': {'f', 'e'}})
如果您喜欢传统方法,则可以添加一个if
条件
>>> answer = {}
>>> for line in f:
... k,v = line.split(";")
... if k in answer:
... answer[k].add(v)
... else:
... answer[k] = {v}
...
>>> answer
{'b': {'d'}, 'd': {'g'}, 'f': {'d', 'g'}, 'e': {'d'}, 'a': {'c', 'b'}, 'c': {'f', 'e'}}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句