- 字典是 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'])
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于