- 直接定义:
dict和set,内部组成都是一个hash表,无序、唯一、长度可变。区别是,dict存的是键值对,set存的是元素。
- 底层结构:
字典存了hash、key、value三个值,set存的是hash和元素。
- 使用注意:
- optionA比optionB性能更好,因为前者直接调用底层c的库,后者还要调用方法。
同理,set也是这样,直接s1 = {1, 2, 3},而不用s2 = set([1, 2, 3])
- 排序
d = {'a':'2','b':'2','c':'1'}
sorted_by_v = sorted(d.items(),key = lambda x:x[0])
print(sorted_by_v)
sorted_by_k = sorted(d.items(),key = lambda x:x[1])
print(sorted_by_k)
s = {2,4,5,3}
sorted_s = sorted(s)
print(sorted_s)
- 字典的key需要hash,可变类型比如列表不能hash,所以不能作为key。同理set
d = {'name': 'zhangsan', ('home'): ['province', 'shanghai']}
d = {'name': 'zhangsan', ['home']: ['province', 'shanghai']}
s = {'name',['zhangsan'],['province', 'shanghai']}
- 需要遍历查找,且唯一的集合,尽量使用dict和set。性能大增。