有什么办法可以在字典中存储重复的键?
我对形成请求和响应对有具体要求。
从特定节点到另一个特定节点的请求形成相同的密钥。我需要将它们都存储。
但是,如果我尝试将它们添加到字典中,则第一个被替换为第二个。有什么办法吗?
我可以想到两个简单的选项,假设您想继续使用字典。
您可以将键映射到项目列表。一个defaultdict从collections模块让一切变得简单。
defaultdict
collections
>>> 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’]})
您可以使用其他数据来消除按键歧义。这可以是时间戳记,唯一的ID号或其他名称。这样做的优点是保留了键和值之间的一对一关系,而缺点是使查找更加复杂,因为您总是必须指定一个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