在 Python 中,字典的键(key)必须是唯一的。如果试图为同一个键多次赋值,后出现的键值对会覆盖先前的值。这是由字典的哈希表实现机制决定的,因为字典需要通过键快速定位到唯一的存储位置。
python
my_dict = {"apple": 1, "banana": 2, "apple": 3}
print(my_dict) 输出: {'apple': 3, 'banana': 2}
1. 哈希表机制
字典通过哈希函数将键映射到内存地址,如果键重复,哈希冲突会导致无法准确存取数据。唯一键确保了哈希表的正确性。
2. 快速查找
唯一键使得通过 `my_dict[key]` 查找值的操作时间复杂度为 O(1)。
如果业务逻辑需要类似“多值键”的行为,可以通过以下方式实现:
python
from collections import defaultdict
my_dict = defaultdict(list)
my_dict["fruit"].append("apple")
my_dict["fruit"].append("banana")
print(my_dict["fruit"]) 输出: ['apple', 'banana']
python
my_dict = {
("fruit", 1): "apple",
("fruit", 2): "banana",
python
from multidict import MultiDict
md = MultiDict
md.add("fruit", "apple")
md.add("fruit", "banana")
print(md.getall("fruit")) 输出: ['apple', 'banana']
字典的键必须是不可变类型(如字符串、数字、元组),因为可变类型(如列表)的哈希值可能变化,导致哈希表失效。
python
valid_key = ("tuple", 1) 合法
invalid_key = ["list", 1] 报错: TypeError
重复键不会引发错误,但可能导致数据丢失。在构造字典时需注意检查键的唯一性。
字典的键必须唯一,这是由其底层哈希表实现决定的。若需要“多值键”,应通过值容器(如列表)或第三方库间接实现。
版权声明: 知妳网保留所有权利,部分内容为网络收集,如有侵权,请联系QQ793061840删除,添加请注明来意。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态
