一尘不染

有没有办法在python字典中保留重复的键

python

有什么办法可以在字典中存储重复的键?

我对形成请求和响应对有具体要求。

从特定节点到另一个特定节点的请求形成相同的密钥。我需要将它们都存储。

但是,如果我尝试将它们添加到字典中,则第一个被替换为第二个。有什么办法吗?


阅读 264

收藏
2020-12-20

共1个答案

一尘不染

我可以想到两个简单的选项,假设您想继续使用字典。

  1. 您可以将键映射到项目列表。一个defaultdictcollections模块让一切变得简单。

    >>> import collections
    

    data = collections.defaultdict(list)
    for k, v in ((‘a’, ‘b’), (‘a’, ‘c’), (‘b’, ‘c’)):
    … data[k].append(v)

    data
    defaultdict(, {‘a’: [‘b’, ‘c’], ‘b’: [‘c’]})

  2. 您可以使用其他数据来消除按键歧义。这可以是时间戳记,唯一的ID号或其他名称。这样做的优点是保留了键和值之间的一对一关系,而缺点是使查找更加复杂,因为您总是必须指定一个id。下面的示例显示了它如何工作。是否对您有好处取决于问题域:

    >>> for k, v in (('a', 'b'), ('a', 'c'), ('b', 'c')):
    

    … i = 0
    … while (k, i) in data:
    … i += 1
    … data[(k, i)] = v

    data

2020-12-20