我的代码有问题,尝试查找如何修复它,并尝试了多种方法,但没有成功
这就是我得到的:
with open("people-data.txt") as f:
children= {}
for line in f.readlines():
parent, child = line.split("->")
children[parent] = child
我尝试使用children[parent].append(child)
等。
我的文件如下:
Mary->Patricia
Mary->Lisa
Patricia->Barbara
当我使用children[Mary]
时,我想要的是['Patricia', 'Lisa']
,但是我的代码所做的只是给我'Lisa'
并覆盖'Patricia'
。
答案 0 :(得分:2)
我尝试使用:
children[parent].append(child)
只要您将列表值用于字典值,该方法就可以使用。
最简单的解决办法是使孩子成为defaultdict
,即
from collections import defaultdict
children = defaultdict(list)
然后使用
children[parent].append(child)
在您的代码中。
演示:
>>> from collections import defaultdict
>>> children = defaultdict(list)
>>>
>>> children['Peter'].append('Bob')
>>> children['Peter'].append('Alice')
>>> children['Mary'].append('Joe')
>>>
>>> children
defaultdict(list, {'Mary': ['Joe'], 'Peter': ['Bob', 'Alice']})