繁体   English   中英

如何在python字典中的键具有多个值?

[英]How to have multiple values for a key in a python dictionary?

我遇到的情况是,同一键可能具有与之关联的不同字符串。

例如flow和wolf都具有相同的字符,如果我将它们排序并将其用作字典中的键,我想将原始字符串作为值。

我在python dict中尝试如下:

d = {}

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

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

我尝试了d["flow"].append("wolf")但这也不起作用。

如何使这种情况与Python字典一起使用?

使用相同的键,词典中不能有多个项目。 您应该做的是将值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")

你可以使用setdefault方法来创建一个列表作为valuekey ,即使该key不是已经在字典中

因此,这使代码非常简单:

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

您可以实现一个类似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']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM