python笔记2-准确掌握字典dict和集合set

235 阅读1分钟
  1. 直接定义
    dict和set,内部组成都是一个hash表,无序、唯一、长度可变。区别是,dict存的是键值对,set存的是元素。
  2. 底层结构
    字典存了hash、key、value三个值,set存的是hash和元素。
  3. 使用注意
  • 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) # [('a', '2'), ('b', '2'), ('c', '1')]

sorted_by_k = sorted(d.items(),key = lambda x:x[1])
print(sorted_by_k) # [('c', '1'), ('a', '2'), ('b', '2')]

s = {2,4,5,3}
sorted_s = sorted(s)
print(sorted_s)   # [2, 3, 4, 5]
  • 字典的key需要hash,可变类型比如列表不能hash,所以不能作为key。同理set
d = {'name': 'zhangsan', ('home'): ['province', 'shanghai']} 
# 正常运行

d = {'name': 'zhangsan', ['home']: ['province', 'shanghai']} 
# 报错:TypeError: unhashable type: 'list'

s = {'name',['zhangsan'],['province', 'shanghai']}
# 报错:TypeError: unhashable type: 'list'
  • 需要遍历查找,且唯一的集合,尽量使用dict和set。性能大增。