Python字典学习笔记(持续更新)
目录
-
更多分享:http://www.catbro.cn
-
- 字典是Python中唯一内建的映射类型,字典中的值没有特殊的顺序,但是都存储在一个特定的键(Key)里面,键可以是数字、字符串甚至元组
字典构造方法
-
1、dict函数创建字典
d = dict([('name','xiaoming'),('age',10)]) d = dict(name='xiaoming',age=10) d = dict()
字典的基本操作
- 字典的基本行为在很多方面与序列类型:
- 1、len(d):返回d中项(键值对)的数量
- 2、d[k]:返回关联到键k上的值
- 3、d[k]=v:将值v关联到键k上
- 4、del d[k]:删除键为k的项
- 5、k in d:检查d中是否有含有键为k的项
字典的格式化输出
- %(key)
字典的方法
-
1、clear:clear方法清除字典中所有的项
-
2、copy:返回一个具有相同键值对的新字典(浅复制)
d1 = {'name':'admin','skill':['java','C','Python']} d2 = d1.copy(); d2['name'] = 'user'; del d2['skill'][0]; print(d1) : {'name': 'admin', 'skill': ['C', 'Python']} print(d2) :{'name': 'user', 'skill': ['C', 'Python']} 可以看到,当替换副本中的值时,原字典不受影响,如果替换的值为对象时,就会受影响了,应为拷贝时为前拷贝,值并没有拷贝,而是直接使用。
-
避免问题方法:
-
1、使用深复制(deep copy),使用copy模块的deepcopy函数实现
from copy import deepcopy; d1 = {'name':'admin','skill':['java','C','Python']} d2 = deepcopy(d1); d2['name'] = 'user'; del d2['skill'][0]; print(d1) : {'name': 'admin', 'skill': ['java', 'C', 'Python']} print(d2) : {'name': 'user', 'skill': ['C', 'Python']}
-
3、fromkeys:使用给定的key建立新的字典,但是对应的值均为None
d = dict().fromkeys(['name','skill']) print(d) : {'name': None, 'skill': None}
-
4、根据key访问字典中的项
-
使用d[key]也可以访问字典中的项,当key不存在时,会报错
-
使用d.get(key) 时如果项不存在,会返回None
-
d.get(key,默认值),其提供了在项不存在时返回默认值的可以参数
-
5、items:返回项的迭代器。可用for进行遍历
d1 = {'name':'admin','skill':'java'} print(d1.items()) : dict_items([('name', 'admin'), ('skill', 'java')])
-
6、items:返回key值迭代器。可用for进行遍历
d1 = {'name':'admin','skill':'java'} print(d1.keys()) : dict_keys(['name', 'skill'])
-
7、pop:获取给定key的值,并将该项从字典中移除
-
8、popitem:类似list.pop(),但是字典弹出的项是随机的。
-
9、setdefault(key,defaultValue):如果key不存在,创建该项并设置值为默认值,并返回,如果key存在,则返回值
d1 = dict(); print(d1); : {} d1.setdefault('name','me'); print(d1); : {'name': 'me'}
-
10、update:用一个字典更新另外一个字典,不存在的会创建并添加,存在的则直接替换
d1 = {'name':'me'} d2={'name':'you','age':18} d1.update(d2) print(d1); : {'name': 'you', 'age': 18}
-
11、values:返回values值迭代器。可用for进行遍历
d1 = {'name':'admin','skill':'java'} print(d1.values()) : dict_values(['admin', 'java'])