Skip to content

流畅的 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 的特点分析

  • 使用了散列表, 所以速度非常快, 然而代价是空间消耗内存大
  • 输出顺序和插入的顺序可能不一致, 因为可能某次插入导致散列表需要重新扩大, 导致顺序发生了改变

Comments