码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2017-07-11 23:21:48      阅读:309      评论:0      收藏:0      [点我收藏+]

标签:没有   error   logs   注意   应该   元素   collect   构造   efault   

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]——字典中的键如何映射多个值?字典如何排序?

标签:没有   error   logs   注意   应该   元素   collect   构造   efault   

原文地址:http://www.cnblogs.com/snsdzjlz320/p/7152400.html

踩
(0)
赞
(0)
   
举报
评论 一句话评论(0)
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!