将多个值添加到字典中的键

时间:2017-11-06 20:35:02

标签: python dictionary

例如我有一本字典:

dictionary = {'dog' : 'bark', 'cat' : 'kitten'}  

我想在密钥'woof'中添加另一个值'dog',以便我得到:

{'dog': ['bark','woof'], 'cat' : 'kitten'}  

然后在密钥'speak'中添加另一个值'dog',以便获得:

{'dog': ['bark','woof', 'speak'], 'cat' : 'kitten'}

等。

感谢任何帮助。

3 个答案:

答案 0 :(得分:3)

首先需要将与dict中每个键相关联的值转换为列表:您可以通过词典理解来完成此操作。之后,只需将项目附加到字典中所需键的列表中即可。以下代码可以使用:

dictionary = {"dog" : "bark", "cat" : "kitten"}
dictionary = {key : [value] for key, value in dictionary.items()}

dictionary["dog"].append("woof")
dictionary["dog"].append("speak")

此时,如果您打印dictionary,输出将为:

{'dog': ['bark', 'woof', 'speak'], 'cat': ['kitten']}

答案 1 :(得分:1)

据我所知,解决方案是从一开始就将每个字典值初始化为一个列表。例如,将字典初始化为dictionary = {'dog' : ['bark'], 'cat' : ['kitten']}。然后,当您想要为字典键添加新值时,可以使用dictionary["dog"].append("speak")

答案 2 :(得分:0)

我会从集合模块中实现defaultdict

以下是官方文档中的一个示例:

>>> s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
>>> d = defaultdict(list)
>>> for k, v in s:
...     d[k].append(v)
...
>>> sorted(d.items())
[('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]