python--dict方法总结

≡放荡痞女 提交于 2019-11-29 21:37:08

python dict
一、为什么使用dict?
1. 优点
2. 特点
二、dict的函数使用
1. 构造
2. 基本操作(增,删,查,改)
3. 旋转构造
4. dict持久化
5. defaultdict
一、为什么使用dict?
1. 优点
1:查找速度快
2:浪费空间
3:key不可以重复,且不可变
4:数据无序排放

2. 特点
1.任何不可变对象都可用作字典的键,如字符串、数字、元组等
2.包含可变对象的列表、字典和元组不能用作键
3.引用不存在的键会引发KeyError异常
4.value可以是字符,数字,列表,元组,字典

二、dict的函数使用
1. 构造
dict {} #空字典
dict={key:value} #经典定义
dict2 = dict(x=1,y=2,z=3) #定义字典另一种方式 // {'y': 2, 'x': 1, 'z': 3}
Dict1=dict2 #浅复制,只是引用而已id(dict1)==id(dict2)
Dict1=dict2.copy() #深复制,2个不同ID的字典id(dict1)!=id(dict2)
Dict=dict.fromkeys(seq,val=None) #创建并返回一个新字典,以 seq 中的元素做该字典的键,val 做该字典中所有键对应的初始值(如果不提供此值,则默认为 None)
dict([container]) #创 建 字 典 的 工 厂 函 数 。 如 果 提 供 了 容 器 类 (container) 就用其中的条目填充字典,否则就创建一个空字典。
1
2
3
4
5
6
7
2. 基本操作(增,删,查,改)
增加
dict[key]=value
dict.update(dict2) #将字典 dict2 的键-值对添加到字典 dict
result = dict(dict1,**dict2) #将字典 dict2 的键-值对与字典dict1的键-值对合并为新的dict
dict.setdefault(key,default=None) #和方法 set()相似,如果字典中不存在 key 键,由 dict[key]=default 为它赋值。
1
2
3
4
删除
del d[key] #删除指定key
d.clear() #清空字典
dict.popc(key[, default]) #和方法 get()相似,如果字典中 key 键存在,删除并返回 dict[key],如果 key 键不存在,且没有给出 default 的值,引发 KeyError 异常。
dict.popitem() #随机弹出(key,value)元组
1
2
3
4
查询
key in dict #判断键(key)是否在字典中存在,是返回 True, 否则返回 False
a=dict[key] #获取指定key的值,如果key不存在,会抛出异常
dict.get(key,[default]) #如果有这个key,返回value,没有这个key,则赋予默认值
len(dict) #返回映射的长度(键-值对的个数)
dict.cmp(dict1,dict2) #比较字典,(优先级为元素个数、键大小、键值大小) #第一个大返回1,小返回-1,一样返回0
dict.items() #返回一个包含字典中(键, 值)对元组的列表
dict.keys() #返回一个包含字典中键的列表
dict.values() #返回一个包含字典中所有值的列表
dict.iter() #方法 iteritems(), iterkeys(), itervalues()与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表。
dict.iteritems() #返回一个dict中(key,value)元组的迭代器对象
d1 = { 'x':1,'y':2,'z':3 } //i1 = d1.iteritems() //i1.next() >>('y', 2)使用next方式遍历每一个元素
dict.iterkeys() #返回dict中key的迭代器对象
dict.itervalues() #返回dict中value的迭代器对象
dict.viewvalues() #返回类似集合方式的字典(值组成)
d1.viewvalues() //dict_values([2, 1, 3])
dict.viewitems() #返回类似集合方式的字典(值组成)(key,value)元组组成
d1.viewitems() //dict_items([('y', 2), ('x', 1), ('z', 3)])
dict.viewkeys() #返回类似集合方式的字典(键组成)
d1.viewkeys() //dict_keys(['y', 'x', 'z'])
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
修改
d[key] = value
1
3. 旋转构造
zip返回元组组成的列表
zip('xyz','123') #[('x', '1'), ('y', '2'), ('z', '3')]对应生成列表
zip('xyzm','123') #[('x', '1'), ('y', '2'), ('z', '3')]多余项被舍弃
zip('xyz','123','qer') #[('x', '1', 'q'), ('y', '2', 'e'), ('z', '3', 'r')]
dict(zip('xyz','123')) #{'y': '2', 'x': '1', 'z': '3'}构造字典
格式化输出字典
import jsonprint json.dumps(d,indent=2) #不同层级以2个空格缩进
1
2
3
4
5
6
7
4. dict持久化
先把字典转换成字符串,然后把字符串写入文件,读出来时再把字符串为字典

import json
data = json.dumps(d)with open(f,'wb') as f:
f.write(data)

import json
with open(f,'wb') as f:
data = f.read()
d = json.loads(data)
1
2
3
4
5
6
7
8
9
10
5. defaultdict
from collections import defaultdict
d=defaultdict(内建函数)
内建函数有:int(), long(), float(), complex(),str(), unicode(), basestring() ,list(), tuple() ,type() ,dict() ,bool() ,set(), frozenset() ,object() ,classmethod() staticmethod() ,super() ,property() ,file()
功能:dict中value默认值为内建函数的默认值,且value的类型为内建函数的类型,如果是普通的dict,则对于不存在的key,其value是不存在的,访问会报错,但对于defaultdict,对于不存在的key,其value存在,为内建函数的默认值
d=defaultdict(lambda:0) 初始化为0
d=defaultdict(int) 初始值为int()的初始值0
d=defaultdict(list) 初始值为list()的初始值[]
d=defaultdict(dict) 初始值为dict()的初始值{}
————————————————
版权声明:本文为CSDN博主「今生唯尔」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_31813549/article/details/79090013

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!