原标题:Python 进阶编程之字典的高级用法
阅读文本大概需要 11 分钟。
一、 collections 中 defaultdict 的使用1.1 字典的键映射多个值
将下面的列表转成字典
l = [( 'a', 2),( 'b', 3),( 'a', 1),( 'b', 4),( 'a', 3),( 'a', 1),( 'b', 3)]
一个字典就是一个键对应一个单值的映射,而上面的列表中有相同键。如果你想要一个键映射多个值,那么就需要将这多个值放到另外的序列中,比如 list 或者 set 里面,像下面这样:
d = {
'a': [ 1, 2, 3],
'b': [ 4, 5]
}
e = {
'a': { 1, 2, 3},
'b': { 4, 5}
}
你可以很方便的使用 collections 模块中的 defaultdict 来构造这样的字典。defaultdict 的一个特征是它会自动初始化每个 key 刚开始对应的值。
In [ 1]: l = [( 'a', 2),( 'b', 3),( 'a', 1),( 'b', 4),( 'a', 3),( 'a', 1),( 'b', 3)]
In [ 2]: fromcollections importdefaultdict
In [ 3]: d = defaultdict(list)
In [ 4]: forkey, value inl:
...: d[key].append(value)
...:
In [ 5]: d
Out[ 5]: defaultdict(list, { 'a': [ 2, 1, 3, 1], 'b': [ 3, 4, 3]})
当然这个默认的容器不一定是 list, 也可以是集合 set。根据自己的需求选择用 list 还是 set 。如果你想保持元素的插入顺序就应该使用列表,如果想去掉重复元素就使用集合!
1.2 统计字典中某个值出现的次数
来源于微信交流群里一个朋友工作中的问题,列表中有很多字典,需要统计字典中相同的键对应的值的和