python 3在字典的相同键下添加多个值

时间:2018-11-25 16:21:34

标签: python python-3.x dictionary

我的代码有问题,尝试查找如何修复它,并尝试了多种方法,但没有成功

这就是我得到的:

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'

1 个答案:

答案 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']})