Python 中字典有如下注意事项
- 键必须是可散列的.一个可散列对象必须满足以下要求:
- 支持
hash()
函数,并且通过__hash__()
方法得到的散列值是不变的. - 支持通过
__eq__()
方法检测相等性 - 若
a == b
为真,则hash(a) == hash(b)
也为真
- 支持
- 字典在内存上的开销巨大.但键查询很快,dict 的实现是典型的空间换时间
- 键的次序取决于添加顺序,但如果添加相同的键值对到字典中,该字典是相等的.如
1 | DIAL_CODES = [ |
- 往字典里添加新键可能会改变已有键的顺序.不要对字典同时进行迭代和修改
无论何时往字典里添加新的键,Python 解释器都可能为字典进行扩容.扩容导致的结果就是要新建一个更大的散列表,并把字典里已有的元素添加到新表里.这个过程中可能会发生新的散列冲突,导致新散列表中键的次序变化.因此,不要对字典同时进行迭代和修改
由于集合与字典内部实现一致.以上提到的内容,同样适用于集合