python – 字典
创建字典
两种方法:
- 直接使用花括号将映射关系定义好
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"}
- 使用dict函数。四种写法:
a = dict(雷="雷电将军",火="玛薇卡",岩="凝光")
#注意:直接用键赋值时键不能加引号。
a = dict([("雷","雷电将军"),("火","玛薇卡"),("岩","凝光")])
a = dict({"雷":"雷电将军","火":"玛薇卡","岩":"凝光"})
a = dict(zip(["雷","火","岩"],["雷电将军","玛薇卡","凝光"]))
增
- 快速初始化一个值都相同的字典:fromkeys
a = dict.fromkeys("风火雷电","旅行者") >>>{'风': '旅行者', '火': '旅行者', '雷': '旅行者', '电': '旅行者'}
此时可以再单独修改个别键对应的值:
a = dict.fromkeys("风火雷电","旅行者") a["风"] = "万叶" print(a) >>>{'风': '万叶', '火': '旅行者', '雷': '旅行者', '电': '旅行者'}
注意:字典不存在重复键
删
- 删除字典中个别键值对:pop()
a = dict.fromkeys("风火雷电","旅行者") a.pop("风") print(a) >>>{'火': '旅行者', '雷': '旅行者', '电': '旅行者'}
但注意,如果pop一个不存在的键会报错。
- 删除整个字典:del()
a = dict.fromkeys("风火雷电","旅行者") del(a)
- 清空字典内所有键值对
a = dict.fromkeys("风火雷电","旅行者") a.clear() print(a) >>>{}
改
- 修改个别键值:直接用等号赋值
a = dict.fromkeys("风火雷电","旅行者") a["风"] = "万叶" print(a) >>>{'风': '万叶', '火': '旅行者', '雷': '旅行者', '电': '旅行者'}
- 修改多个键值对:update()
a = dict.fromkeys("风火雷电","旅行者") a.update({"风" : "万叶","火":"玛薇卡"}) print(a) >>>{'风': '万叶', '火': '玛薇卡', '雷': '旅行者', '电': '旅行者'}
等于用一个小一点的字典覆盖原字典的一部分。
查
-
指定一个键直接查询即可。但如果查询的键字典中没有,就会报错。
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a["雷"]) >>>雷电将军
-
更好的做法是用 get() 消除不存在该键时的报错:
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a.get("风","这里没有风")) >>>这里没有风
-
还可以用 setdefault() 实现查找若有则返回原键值,没有则直接赋新的键值对加入字典末尾:
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a.setdefault("雷","八重")) >>>雷电将军 #因为原键集里有雷,所以返回原键值,并不赋入新值"八重"
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a.setdefault("风","万叶")) #此时若再输出字典a,则会得到已加入新键值对的字典: #{'雷': '雷电将军', '火': '玛薇卡', '岩': '凝光', '风': '万叶'} >>>万叶
获取视图对象
什么是视图对象?就是选择展现字典的某部分或全部,只是一个展现形式,若原字典变化,展现出来的内容也会变化。就像excel筛选后得到视图,但原表格并未发生变化;而若原表格数据变化后,视图展现的内容自然也会随之变化。
- 获取键值对视图:
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a.items()) >>>dict_items([('雷', '雷电将军'), ('火', '玛薇卡'), ('岩', '凝光')])
- 单独获取键集视图:
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a.keys()) >>>dict_keys(['雷', '火', '岩'])
- 单独获取值集视图:
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} print(a.values()) >>>dict_values(['雷电将军', '玛薇卡', '凝光'])
还可以对字典做什么处理
- 对字典内的键值对计数: len()
- 某个键是否存在于字典中:“xx” in a,返回true/false
- 获取字典中所有的键构成的列表:list()
- 获取字典中所有的值构成的列表:list(a.values())
嵌套
- 字典嵌字典:
a = {"雷电将军":{"语文":90,"数学":80,"烹饪":0},"凝光":{"语文":80,"数学":90,"经营":100}} print(a.["雷电将军"]["烹饪"]) >>>0
- 字典嵌列表:
a = {"雷电将军":[70,80,0],"凝光":[80,90,100]} print(a.["凝光"][2]) #列表的索引是数字,因此内层索引变了 >>>100
字典推导式
一些使用例子
- 键与值互换:
a = {"雷":"雷电将军","火":"玛薇卡","岩":"凝光"} b = {v:k for k,v in a.items()} print(b) >>>{'雷电将军': '雷', '玛薇卡': '火', '凝光': '岩'}
- 展示字符串编码值
b = {x:ord(x) for x in "Genshin"} #x:ord(x)就是键值对的格式 print(b) >>>{'G': 71, 'e': 101, 'n': 110, 's': 115, 'h': 104, 'i': 105}
作者:susie0815