python defaultdict
from collections import defaultdict #defaultdict 是dict的子类, 所以dict支持的function, defaultdict基本上都支持 #如果程序试图访问不存在的key的value的时候,dict会报key error #但是defaultdict可以提供一个默认值(其实有default_factory属性,该属性所指定的函数负责为不存在的key来生成value dict1 = {} def test(): return "helloworld" defaultdict1 = defaultdict(test) print(defaultdict1['shun']) # helloworld defaultdict1 = defaultdict(int) print(defaultdict1['shun']) # 0 print(dict1['shun']) # KeyError: 'shun'
from collections import defaultdict #defaultdict 是dict的子类, 所以dict支持的function, defaultdict基本上都支持 #如果程序试图访问不存在的key的value的时候,dict会报key error #但是defaultdict可以提供一个默认值(其实有default_factory属性,该属性所指定的函数负责为不存在的key来生成value """ 有这样一个需求 程序中包含多个key-value 对数据,在这些kwy-value中有些key是重复的,程序希望对这些key-value对进行整理, ke有对应一个list, 该list中包含这组数据中该key对应的所有value """ #方法1: 传统的dict 方法实现 list1 = [("name","guo"),("age",10),("age",11)] dict1 = {} for k , v in list1: #setdefault方法用于获取指定key对应的value dict1.setdefault(k,[]).append(v) print(dict1["name"]) # ['guo'] print(dict1) #{'name': ['guo'], 'age': [10, 11]} #方法2:使用defaultdict 方法实现 list1 = [("name","guo"),("age",10),("age",11)] dict1 = {} d = defaultdict(list) for k , v in list1: d[k].append(v) print(d["name"]) #['guo'] print(d) #defaultdict(<class 'list'>, {'name': ['guo'], 'age': [10, 11]})