1.6在字典中将键映射到多个值

将这多个值保存在另一个容器如列表或集合中。
使用collections模块中的defaultdict类。

collections模块中的defaultdict类是Python标准库中的一个字典(dict)子类,它提供了所有常规字典的方法。defaultdict的主要特点是在访问不存在的键时,会自动创建该键并将其值设置为一个默认值,这个默认值是通过在创建defaultdict对象时传递给构造器的可调用对象(如函数)返回的。

以下是defaultdict的一些主要特性:

  • 自动创建不存在的键:当尝试访问一个不存在的键时,defaultdict会自动创建这个键并将其值设置为由默认工厂函数返回的值。
  • 可指定默认值的类型:可以指定默认值的类型,如list、int、set等,这使得defaultdict非常适合于收集和组织数据。
  • 简化代码:使用defaultdict可以避免在字典操作中频繁检查键是否存在的代码,使得代码更简洁易读。

1.7让字典保持有序

collections模块中的OrderedDict类。当对字典做迭代时,他会严格按照元素初始添加顺序进行。
注意:OrderedDict的大小是普通字典的2倍多。

1.8与字典有关的计算问题

利用zip()将字典中的键和值反转。

1.9在两个字典中寻找共同点

通过keys()或items()方法执行常见的集合操作。

1.10从序列中移除重复项并保持元素间顺序不变

通过集合和生成器解决。

1
2
3
4
5
6
7
8
9
10
def dedupe(items):
seen = set()
for item in items:
if item not in seen:
yield item
seen.add(item)

a = [1, 5, 2, 1, 9, 1, 5, 10]
list(dedupe(a))