如何在python字典中为一个键设置多个值?

时间:2018-02-17 19:48:39

标签: python dictionary defaultdict

我有一个案例,相同的键可能有不同的字符串与它相关联。

e.g。流和狼=>机器人具有相同的字符,如果我对它们进行排序并将它们用作字典中的键,我想将原始字符串作为值。

我在python dict中尝试过:

d = {}

d["flow"] = flow
d["flow"] = wolf

但只有一个与该键相关联的值。

我尝试了d["flow"].append("wolf"),但这也行不通。

如何让这个场景与Python dicts一起使用?

3 个答案:

答案 0 :(得分:5)

您不能在字典中使用相同的键创建多个项目。你应该做的是使值为list。像这样 -

d = dict()
d["flow"] = ["flow"]
d["flow"].append("wolf")

如果这是您想要做的,那么您可能想要使用defaultdict。然后就可以了

from collections import defaultdict
d = defaultdict(list)
d["flow"].append("flow")
d["flow"].append("wolf")

答案 1 :(得分:2)

你可以实现类似dict的类。

class MultiDict:
    def __init__(self):
        self.dict = {}

    def __setitem__(self, key, value):
        try:
            self.dict[key].append(value)
        except KeyError:
            self.dict[key] = [value]

    def __getitem__(self, key):
        return self.dict[key]

以下是如何使用它

d = MultiDict()
d['flow'] = 'flow'
d['flow'] = 'wolf'
d['flow'] # ['flow', 'wolf']

答案 2 :(得分:2)

您可以使用setdefault方法为value key创建列表,即使key 不是已经在字典中

所以这使得代码非常简单:

>>> d = {}
>>> d.setdefault(1, []).append(2)
>>> d.setdefault(1, []).append(3)
>>> d.setdefault(5, []).append(6)
>>> d
{1: [2, 3], 5: [6]}