字典构造方法
字典推导
可以从任何以键值对作为元素的可迭代对象中构建出字典
例:
DIAL_CODES=[(86,'China'),(91,'India')...]
contry_code = {country:code for code, country in DIAL_CODES}
用setdefault处理找不到的键
my_dict.setdefault(key, []).append(new_value)相当于
if key not in my_dict:
my_dict[key] = []
my_dict[key].append(new_value)
映射的弹性键查询
defaultdict:处理找不到的键的一个选择
比如,我们新建了这样一个字典:dd=defaultdict(list),如果键"new-key"在dd中还不存在的话,表达式dd['new-key']会按照以下的步骤来行事:
1、调用list()来建立一个新列表
2、把这个新列表作为值,'new-key'作为它的键,放到dd中。
3、返回这个列表的引用
集合论
集合的本质是许多唯一对象的聚集,因此,集合可以用于去重。
除了保证唯一性,集合还实现了许多基础的中缀运算符。给定两个集合a和b,a|b返回的是它们的合集,a&b返回的是它们的交集,而a-b得到的是差值。
dict的实现及其导致的结果
1、键必须是可散列的
一个可散列的的对象必须满足以下要求:
(1)支持hash()函数,并且通过__hash__()方法所得到的散列值是不变的。
(2)支持通过__eq__()方法来检测相等性。
(3)若a==b为真,则hash(a) == hash(b)也为真
2、字典在内存上的开销巨大。
3、键查询很快。
4、键的次序取决于添加顺序。
5、往字典里添加新键可能会改变已有键的顺序。