09.python常用数据类型—字典
字典(dict)
字典也可以當做是個容器,在內部可以存放數據。相比較于元組和列表,字典的元素必須是 鍵值對。
注意:在Python3.6+字典就是有序了,之前的字典都是無序。
1. 字典定義
info = {"age":12, "status":True, "name":"11","hobby":['籃球','足球']}# 例如: "age":12 稱為一個鍵值對。 department_dict = { "IT部門":["11","22"], "銷售部":["張三","劉能","張揚"], "財務部":["ee"] } department_dict = { "qq":{"id":1,"gender":"男","email":"xx@live.com"}, "xx":{"id":1,"gender":"男","email":"xx@live.com"}, "cc":{"id":1,"gender":"男","email":"xx@live.com"}, "vv":{"id":1,"gender":"男","email":"xx@live.com"}, "ff":{"id":1,"gender":"男","email":"xx@live.com"}, "bb":{"id":1,"gender":"男","email":"xx@live.com"}, ...}注意:字典的鍵有特殊要求,即:必須可哈希 。 目前為止學到的可哈希的類型:int/bool/str/tuple;不可哈希的類型:list/dict
# 合法 dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帥 哥', '美?'], (1, 2, 3): '麻花藤'} print(dic[123]) print(dic[True]) print(dic['id']) print(dic['stu']) print(dic[(1, 2, 3)]) # 不合法 # dic = {[1, 2, 3]: '周杰倫'} # list是不可哈希的. 不能作為key # dic = {{1: 2}: "哈哈哈"} # dict是不可哈希的. 不能作為key # dic = {{1, 2, 3}: '呵呵呵'} # set是不可哈希的, 不能作為key2 .常見方法
所有的鍵
info = {"age":12, "status":True, "name":"oo","email":"xx@live.com"} data = info.keys() # 獲取字典的所有的鍵,返回一個`高仿的`列表,存放的都是字典中的key。 print(data) # 輸出:dict_keys(['age', 'status', 'name', 'email']) info = {"age":12, "status":True, "name":"33","email":"xx@live.com"} for ele in info.keys():print(ele)注意:在Python2中 字典.keys()直接獲取到的是列表,而Python3中返回的是高仿列表,這個高仿的列表可以被循環顯示。
所有的值
info = {"age":12, "status":True, "name":"rr","email":"xx@live.com"} data = info.values() print(data) # 輸出:dict_values([12, True, 'wupeiqi', 'xx@live.com']) info = {"age":12, "status":True, "name":"tt","email":"xx@live.com"} for val in info.values():print(val) # 輸出:dict_values([12, True, 'wupeiqi', 'xx@live.com'])注意:在Python2中 字典.values()直接獲取到的是列表,而Python3中返回的是高仿列表,這個高仿的列表可以被循環顯示。
所有的鍵值
info = {"age":12, "status":True, "name":"22","email":"xx@live.com"} data = info.items() print(data) # 輸出 dict_items([('age', 12), ('status', True), ('name', 'wupeiqi'), ('email', 'xx@live.com')]) for item in info.items():print(item) # item是一個元組 (鍵,值) for key,value in info.items():print(key,value) # key代表鍵,value代表值,將兼職從元組中直接拆分出來了。更新字典鍵值對
info = {"age":12, "status":True} info.update({"age":14,"name":"yy"}) # info中沒有的鍵直接添加;有的鍵則更新值print(info) # 輸出:{"age":14, "status":True,"name":"武沛齊"}移除字典的鍵值對
info = {"age":12, "status":True,"name":"uu"} data = info.pop("age") print(info) # {"age":12,"name":"武沛齊"}print(data) # 12根據鍵獲取值
info = {"age":12, "status":True,"name":"ii"} data = info.get("name",None) # 根據name為鍵去info字典中獲取對應的值,如果不存在則返回None,存在則返回值。 print(data) # 輸出:武沛齊6.3 轉換
由于字典的每一個元素是鍵值對,所以想要轉換為字典的必須要有個特定的格式才能轉換成功
v = dict([("k1","v1"),("k2","v2")]) print(v) # 輸出:{'k2': 'v2', 'k1': 'v1'} v = dict([ ["k1","v1"], ["k2","v2"] ]) print(v) # 輸出:{'k2': 'v2', 'k1': 'v1'}子元素必須包含兩個元素,從而將值對應給字典的鍵、值。
6.4 其他
取長度
info = {"age":12, "status":True,"name":"kk"} data = len(info) print(data) # 輸出:3索引(鍵)
字典不同于元組和列表,字典的索引是鍵,而列表和元組則是 0、1、2等數值 。
提示:字典根據鍵的查找速度非常快,遠遠大于列表或元組通過索引查找的速度,因為字典內部是基于hash存儲。
根據鍵 修改值 和 添加值 和 刪除鍵值對
上述示例通過鍵可以找到字典中的值,通過鍵也可以對字典進行添加和更新操作
for循環
由于字典也屬于是容器,內部可以包含多個鍵值對,可以通過循環對其中的:鍵、值、鍵值進行循環;
info = {"age":12, "status":True,"name":"yy"} for item in info.key(): print(item) info = {"age":12, "status":True,"name":"ii"} for item in info.values(): print(item) info = {"age":12, "status":True,"name":"uuu"} for key,value in info.items(): print(key,value)字典嵌套
截止目前位置我們已學了:int/str/list/tuple/dict 五種常見數據類型,而其中list/tuple/dict類型中可以包含子元素,所以他們的內容就可以進行數據的嵌套。但在嵌套和對內部數據操作時要注意:
元組子元素不能變 不可哈希的list、dict不能做字典的鍵 dic = {'name':'汪峰','age':48,'wife':[{'name':'國際章','age':38}],'children':['第一個熊孩子','第二個熊孩子']}"""1. 獲取汪峰的妻子名字d1 = dic['wife'][0]['name']print(d1)2. 獲取汪峰的孩子們d2 = dic['children']print(d2)3. 獲取汪峰的第一個孩子d3 = dic['children'][0]print(d3)4. 汪峰的媳婦姓名變更為 章子怡dic['wife'][0]['name] = "章子怡"print(dic)5. 汪峰再娶一任妻子dic['wife'].append({"name":"鐵錘","age":19})print(dic)6. 給汪峰添加一個愛好:吹牛逼dic['hobby'] = "吹牛逼"print(dic)7. 刪除汪峰的年齡del dic['age']或dic.pop('age')_print(dic)"""總結
以上是生活随笔為你收集整理的09.python常用数据类型—字典的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: P5520 [yLOI2019] 青原樱
- 下一篇: websocket python爬虫_p