流畅的 Python 阅读记录三:字典和集合
主要是 dict && set 的一些知识
1. 向 dict 添加内容, 担心没有 key
# 做法一, 最普通的
if key not in my_dict:
my_dict[key] = []
my_dict[key].append(new_value)
# 做法二, 利用 defaultdict
# 要求元素全是 list
my_dict = collections.defaultdict(list)
my_dict[key].append(new_value)
# 做法三, 自创一个继承 dict 的类, 然后重载 __missing__ 方法
2. 什么时候应该用 set ?
-
找出两个对象中重合元素
# 如果只要其中一个是 set , 那么这种可能就比下面的好一些 found = len(set(aaa) & set(bbb)) found = 0 for n in aaa: if n in bbb: found += 1
-
去重, 因为 set 会默认去重~
3. dict 和 set 的特点分析
- 使用了散列表, 所以速度非常快, 然而代价是空间消耗内存大
- 输出顺序和插入的顺序可能不一致, 因为可能某次插入导致散列表需要重新扩大, 导致顺序发生了改变