提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
提示:以下是本篇文章正文内容,下面案例可供参考
一、字典是什么{}?
无序,可变键值对集合
二、定义
方式1
{key: value, key: value...}
例如
{"name": "sz", "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, 是实例化的字典对象
注意
key不能重复
如果重复
后值会把前值覆盖
key必须是任意不可变类型
例如
可变
列表
字典
可变集合
...
不可变
数值
布尔
字符串
元组
...
person={"name":"ww","age":18,"age":19}
print(person)
a=dict.fromkeys("abc", 666)
print(a)
print(type(a))
b={1:1,2:2}.fromkeys("abc", 666)
print(b)
print(type(b))
结果:
{'name': 'ww', 'age': 19}
{'a': 666, 'b': 666, 'c': 666}
<class 'dict'>
{'a': 666, 'b': 666, 'c': 666}
<class 'dict'>
三、常用操作
增
dic[key] = value
当key在原字典中不存在时, 即为新增操作
删
del dic[key]
key, 必须要存在
dic.pop(key[, default])
删除指定的键值对, 并返回对应的值
如果key, 不存在, 那么直接返回给定的default值; 不作删除动作
如果没有给定默认值, 则报错
dic.popitem()
删除按升序排序后的第一个键值对, 并以元组的形式返回该键值对
如果字典为空, 则报错
dic.clear()
删除字典内所有键值对
返回None
注意, 字典对象本身还存在, 只不过内容被清空
注意和del的区别
改
只能改值, 不能改key
修改单个键值对
dic[key] = value
直接设置, 如果key不存在, 则新增, 存在则修改
批量修改键值对
oldDic.update(newDic)
根据新的字典, 批量更新旧字典中的键值对
如果旧字典没有对应的key, 则新增键值对
person={"name":"ww","age":18,"age":19,"school":"iii","haha":8}
print(person)
person["weight"]=140
person["age"]=18
print(person)
newdic={"name":"ss","age":17}
person.update(newdic)
print(person)
del person["school"]
print(person.pop("haha"))
print(person.pop("ss",0))
print(person.popitem())
print(person)
print(person.clear())
print(person)
结果:
{'name': 'ww', 'age': 19, 'school': 'iii', 'haha': 8}
{'name': 'ww', 'age': 18, 'school': 'iii', 'haha': 8, 'weight': 140}
{'name': 'ss', 'age': 17, 'school': 'iii', 'haha': 8, 'weight': 140}
8
0
('weight', 140)
{'name': 'ss', 'age': 17}
None
{}
查
获取单个值
方式1
dic[key]
如果key, 不存在, 会报错
方式2
dic.get(key[, default])
如果不存在对应的key, 则取给定的默认值default
如果没有默认值, 则为None
但不会报错
但是, 原字典不会新增这个键值对
方式3
dic.setdefault(key[,default])
获取指定key对应的值
如果key不存在, 则设置给定默认值, 并返回该值
如果默认值没给定
则使用None代替(会改变之前的字典)
获取所有的值
dic.values()
获取所有的键
dic.keys()
获取字典的键值对
dic.items()
遍历
for in
for x,y in info.items()
计算
len(info)
键值对的个数
判定
x in dic
判定dic中的key, 是否存在x
x not in dic
判定dic中的key, 是否不存在x
person={"name":"ww","age":18,"age":19,"school":"iii","haha":8}
print(person["name"],person.get("ss"),person.setdefault("ww"))
print(len(person))
print("ww" in person)
print("ss" in person)
print(person)
for x,y in person.items():
print("k值:",x)
print("value值:",y)
print(person.values())
print(person.keys())
print(person.items())
结果:
ww None None
5
True
False
{'name': 'ww', 'age': 19, 'school': 'iii', 'haha': 8, 'ww': None}
k值: name
value值: ww
k值: age
value值: 19
k值: school
value值: iii
k值: haha
value值: 8
k值: ww
value值: None
dict_values(['ww', 19, 'iii', 8, None])
dict_keys(['name', 'age', 'school', 'haha', 'ww'])
dict_items([('name', 'ww'), ('age', 19), ('school', 'iii'), ('haha', 8), ('ww', None)])