您的位置:首页 > 编程语言 > Python开发

python的collection系列-默认字典(defaultdict)

2016-04-22 18:18 489 查看
默认字典,能定义默认值为其他类型

#dic1 = {}
#dic1["k1"].append("kkkkk")         #正常情况会报错
#print(dic1)

import collections
dic = collections.defaultdict(list)    #指定字典的值为列表
dic["k1"].append("kkkkk")
print(dic)

#执行结果:
defaultdict(<class 'list'>, {'k1': ['kkkkk']})


#有如下值集合,不用默认字典执行代码如下
#[11,22,33,44,55,66,77,88,99,90]
#将所有大于66的值保存在字典的第一个key中,
#将小于等于66的值保存在第二个key的值(列表)中。
#即:{"k1":大于66,"k2":小于等于66}

li = [11,22,33,44,55,66,77,88,99,90]
dic = {}

for i in li:
if i>66:
if "k1" in dic.keys():
dic["k1"].append(i)
else:
dic["k1"] = [i,]
else:
if "k2" in dic.keys():
dic["k2"].append(i)
else:
dic["k2"] = [i,]
print(dic)

#执行结果:
{'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]}


#用默认字典精简代码
from collections import defaultdict         #这样写,下面就不用写collections.defaultdict了
values = [11, 22, 33,44,55,66,77,88,99,90]
my_dict = defaultdict(list)

for value in  values:
if value>66:
my_dict['k1'].append(value)
else:
my_dict['k2'].append(value)
print(my_dict)

#执行结果:
defaultdict(<class 'list'>, {'k2': [11, 22, 33, 44, 55, 66], 'k1': [77, 88, 99, 90]})
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: