python设置默认字典(setdefault collections.defaultdict)

来源:互联网 发布:ubuntu win7引导修复 编辑:程序博客网 时间:2024/05/16 03:14

    • setdefault
    • get
    • collections defaultdict

setdefault

dict.setdefault(key, default=None)

如果键不存在于字典中,将会添加新的键并将值设为默认值(改变了字典)。如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。

stu = [('wang', 1), ('zhang', 4), ('fu', 2), ('li', 3), ('fu', 7), ('wang', 2), ('wang', 8)]stu_set = {}for k, v in stu:    stu_set.setdefault(k, set()).add(v)for k, v in stu_set.items():    print(k, v)# outputzhang {4}fu {2, 7}li {3}wang {8, 1, 2}

get

get()方法返回给定键的值。如果键不可用,则返回默认值(没有改变字典)。

dict.get(key, default=None)

collections defaultdict

defaultdict() 返回一个字典,会自动给每个键(key)赋一个初始值

collections.default([default_factory[, ...]])

使用工厂方法default_factory给所有key对应的value赋初始值,这些工厂方法有int(), long(), float(), complex(),str(), unicode(), basestring(),
list(), tuple(),dict(),bool()
set(), frozenset(),object(), classmethod()
staticmethod(),super(),property(),file()

import collectionss = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]d = collections.defaultdict(list)for k, v in s:    d[k].append(v)list(d.items())

如果不用工厂方法,也可以使用自定义方法

counts = collections.defaultdict(lambda : [0, 0, 0])

例如,可以让每个vlaue的初始值为10

import collectionsd = collections.defaultdict(lambda :10)a = [('a', 1), ('b', 3), ('c', 2), ('b', 6), ('a', 7)]for k, v in a:    d[k] += vfor k, v in d.items():    print(k, v)# outputc 12b 19a 18

参考资料
1 collections defaultdict(默认字典)
2 Python collections.defaultdict() 与 dict的使用和区别
3 Python 字典(Dictionary) setdefault()方法
4 Python collections.defaultdict 笔记

原创粉丝点击