首页 > 代码库 > [PY3]——字典中的键如何映射多个值?字典如何排序?

[PY3]——字典中的键如何映射多个值?字典如何排序?

Defaultdict 默认字典

  • collections 模块中的 defaultdict(默认字典),可以用来构造“一个键映射多个值”这样的字典
  • 如果你想保持元素的插入顺序就应该使用list, 如果想去掉重复元素就使用set
import collections import defaultdict
d
=defaultdict(list) / e=defaultdict(set)

d = {    ‘a‘ : [1, 2, 3],    ‘b‘ : [4, 5]}e = {    ‘a‘ : {1, 2, 3},    ‘b‘ : {4, 5}}
  • 要注意,defaultdict会自动为将要访问的键(就算目前字典中并不存在这样的键)创建映射实体
from collections import defaultdict
d
=defaultdict(list)d[1].append(a)d[1].append(b)d[2].append(a)print(d[0]) [] //即使我们没有为d[0]赋值,但依旧为这个位置占了个坑print(d) defaultdict(<class list>, {0: [], 1: [a, b], 2: [a]})q=defaultdict(set)q[0].add(a0)q[0].add(b0)q[0].add(c0)q[1].add(d1)print(q) defaultdict(<class set>, {0: {b0, c0, a0}, 1: {d1}})

 

setdefault

p={}p.setdefault(1,[]).append(a)p.setdefault(1,[]).append(b)p.setdefault(2,[]).append(c)print(p[0])    KeyError: 0  #和上面相反,这个并不会占坑print(p) {2: [c], 1: [a, b]}

 

创建一个多值映射字典

d = {}for key, value in pairs:    if key not in d:        d[key] = []    d[key].append(value)d = defaultdict(list)for key, value in pairs:    d[key].append(value)

 

[PY3]——字典中的键如何映射多个值?字典如何排序?