在Python中,字典的键是不允许重复的。如果你尝试添加重复的键,后添加的值会覆盖之前的值:
python
d = {'a': 1, 'a': 2}
print(d) 输出: {'a': 2}
虽然字典本身不支持重复键,但可以通过以下方法实现类似功能:
每个键对应一个列表,保存所有值:
python
from collections import defaultdict
自动为每个键初始化空列表
d = defaultdict(list)
添加值
d['key'].append(1)
d['key'].append(2)
print(d) 输出: defaultdict(
重写字典的赋值逻辑,使重复键的值合并到列表:
python
class MultiKeyDict(dict):
def __setitem__(self, key, value):
if key in self:
self[key].append(value)
else:
super.__setitem__(key, [value])
d = MultiKeyDict
d['a'] = 1
d['a'] = 2
print(d) 输出: {'a': [1, 2]}
直接存储键值对的列表(允许重复):
python
entries = [('a', 1), ('a', 2), ('b', 3)]
查找所有 'a' 对应的值
values = [v for k, v in entries if k == 'a']
print(values) 输出: [1, 2]
| 需求 | 实现方式 |
||-|
| 强制键唯一 | 直接使用原生字典 |
| 允许键重复,存储所有值 | 使用`defaultdict(list)`或自定义类 |
| 保留所有键值对记录 | 使用元组列表 |
根据实际场景选择最适合的方案!
版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态