该总结来源于网络王顺子的课程课件
字典是无序的, 可变的键值对集合
1、定义方式
方式1:{key: value,key: value...}
例如{"name": "sz","age": 18}
dic = {'name': 'zsw', 'age': 18} print(dic)
结果:
{'name': 'zsw', 'age': 18}
方式2: fromkeys(S,v=None)
静态方法
类和对象都可以调用
类调用
dict.fromkeys("abc",666)-> {'a': 666, 'c': 666, 'b': 666}
此处的dict, 是指字典类型
对象调用
dic.fromkeys("abc",666) -> {'a': 666, 'c': 666, 'b': 666}
此处的dic, 是实例化的字典对象
dic = dict.fromkeys('abc', 666) print(dic)
结果:
{'a': 666, 'b': 666, 'c': 666}
注意:
1、key不能重复。如果重复,后值会把前值覆盖
2、key必须是任意不可变类型。可变(列表,字典,可变集合,...);不可变(数值,布尔,字符串,元组,...)
原因:
2、操作方式
2.1 增
dic[key] = value,当key在原字典中不存在时, 即为新增操作
dic = {'name': 'zsw', 'age': 18} dic['ad'] = 'sjz' print(dic)
结果:
{'name': 'zsw', 'age': 18, 'ad': 'sjz'}
2.2 删
del dic[key],key必须要存在
dic = {'name': 'zsw', 'age': 18} del dic['name'] print(dic)结果:
{'age': 18}
dic.pop(key[, default])
删除指定的键值对, 并返回对应的值
如果key, 不存在, 那么直接返回给定的default值; 不作删除动作
如果没有给定默认值, 则报错
dic = {'name': 'zsw', 'age': 18} result = dic.pop('name') print(result) print(dic)结果:
zsw
{'age': 18}
dic.popitem()
删除按升序排序后的第一个键值对, 并以元组的形式返回该键值对
如果字典为空, 则报错
dic = {'name': 'zsw', 'age': 18} result = dic.popitem() print(result) print(dic)结果:
('age', 18)
{'name': 'zsw'}
dic.clear()
删除字典内所有键值对,返回None
注意, 字典对象本身还存在, 只不过内容被清空,注意和del的区别
dic = {'name': 'zsw', 'age': 18} result = dic.clear() print(result) print(dic)结果:
None
{}
2.3 改
只能改值, 不能改key
修改单个键值对
dic[key]= value
直接设置, 如果key不存在, 则新增, 存在则修改
dic = {'name': 'zsw', 'age': 18} dic['age'] = 28 print(dic)结果:
{'name': 'zsw', 'age': 28}
批量修改键值对
oldDic.update(newDic)
根据新的字典, 批量更新旧字典中的键值对
如果旧字典没有对应的key, 则新增键值对
dic = {'name': 'zsw', 'age': 18} dic1 = {'age': 28, 'ad': 'sjz'} result = dic.update(dic1) print(result) print(dic)
结果:
None
{'name': 'zsw', 'age': 28, 'ad': 'sjz'}
2.4 查
获取单个值:
方式1:
dic[key]
如果key, 不存在, 会报错
dic = {'name': 'zsw', 'age': 18} result = dic['age'] print(result)结果:18
方式2:
dic.get(key[, default])
如果不存在对应的key, 则取给定的默认值default
如果没有默认值, 则为None,但不会报错
但是, 原字典不会新增这个键值对
dic = {'name': 'zsw', 'age': 18} result = dic.get('age') result1 = dic.get('ad') print(result) print(result1) print(dic)结果:
18
None
{'name': 'zsw', 'age': 18}
方式3:
dic.setdefault(key[,default])
获取指定key对应的值
如果key不存在, 则设置给定默认值, 并返回该值
如果默认值没给定,则使用None代替
dic = {'name': 'zsw', 'age': 18} result = dic.setdefault('age') result1 = dic.setdefault('ad', 'sjz') print(result) print(result1) print(dic)
结果:
18
sjz
{'name': 'zsw', 'age': 18, 'ad': 'sjz'}
获取所有键:
dic.keys()
dic = {'name': 'zsw', 'age': 18} result = dic.keys() print(result)结果:
dict_keys(['name', 'age'])
获取所有值:
dic.values()
dic = {'name': 'zsw', 'age': 18} result = dic.values() print(result)结果:
dict_values(['zsw', 18])
获取字典的键值对
dic.items()
dic = {'name': 'zsw', 'age': 18} result = dic.items() print(result)
结果:
dict_items([('name', 'zsw'), ('age', 18)])
遍历:
for in。for x,y in info.items()
dic = {'name': 'zsw', 'age': 18} for x, y in dic.items(): print(x, y)结果:
name zsw
age 18
2.5 计算
len(info)。键值对的个数
dic = {'name': 'zsw', 'age': 18} result = len(dic) print(result)结果:2
2.6 判定
x in dic。判定dic中的key, 是否存在x
x not in dic。判定dic中的key, 是否不存在x
dic = {'name': 'zsw', 'age': 18} result = 'name' in dic result1 = 'name' not in dic print(result) print(result1)结果:
True
False