字典派生自 collections.MutableMapping
country_code = {
country: code for code, country in DIAL_CODES}
my_dict.setdefault(key, []).append(new_value)
>>> import collections
>>> index = collections.defaultdict(list)
>>> index['hunan'].append('changsha')
>>> index
defaultdict(<class 'list'>, {
'hunan': ['changsha']})
__missing__
方法__getitem__
方法,如果没有找到,就会触发 __missing__
方法__contains__
方法,如果>>> from types import MappingProxyType
>>> d = {
1:'A'}
>>> d_proxy = MappingProxyType(d)
>>> d_proxy
mappingproxy({
1: 'A'})
>>> d_proxy[1] = 'X'
Traceback (most recent call last):
File "" , line 1, in <module>
TypeError: 'mappingproxy' object does not support item assignment
set和frozenset直到 python2.3才首次出现,在python2.6中升级为内置类型
>>> l = ['spam', 'spam', 'eggs', 'spam']
>>> set(l)
{
'spam', 'eggs'}
>>> list(set(l))
['spam', 'eggs']
found = len(set(needles) & set(haystack))
以上例子,在含有 10000000个元素中搜索1000个值,大概只需要3毫秒左右。
在有1000万个键的字典里查找1000个数,只需要 0.000337秒
使用集合的时间差不多
使用列表的速度最慢,需要100秒左右
__hash__
方法。1. 字典算得上是python的基石
2. python的特点是“简单而正确”
3. 由于拥有紧凑的列表和字典表达,JSON格式可以完美地用于数据交换