字典是 python 中唯一的映射類型,采用 鍵值對( key-value )的形式存儲數據。 python 對 key 進行哈希函數運算,根據計算的結果決定 value 的存儲地址,所以字典是無序存儲的,且 key 必須是可哈希的。 可哈希表示 key 必須是不可變類型,如:數字、字符串、元組。
特性:無順序、去重、查詢速度快,比列表快多了、比list占用內存多
字典 = { key: value }
創建
1, 使用”{}”創建:
dd = {'a': 'aaa', 'b': 'bbb'}
2,使用dict創建:
li = [('aa', 'aaa'),('bb', 'bbb')]
dd = dict(li)
print(dd) # 輸出{'aa': 'aaa', 'bb': 'bbb'}
dd = dict(aa='aaa', bb='bbb')
print(dd) # {'aa': 'aaa', 'bb': 'bbb'}
增
info["stu04"] = "Dd" # 直接增加;
print(info)
update用于合并兩個字典:字典1.update(字典2)
刪
del info["stu01"] # info.pop("stu01")
info.popitem() # 隨機刪除
字典名.pop(‘鍵’)
字典名.clear() # 清楚所有元素;
改
dic = {"name":"jin","age":18,"sex":"male"}
dic2 = {"name":"alex","weight":75}
dic2.update(dic) # 將dic所有的鍵值對覆蓋添加(相同的覆蓋,沒有的添加)到dic2中
print(dic2)
dict1["stu04"]="馬六" #類似增加,如果key值存在,則就修改
查詢、獲取
print(info.get("stu07")) # 有該鍵則返回,無該鍵則返回None。
print('stu02' in info) # 判斷是否在該字典中;
dd = {'a': 'aaa', 'b': 'bbb', 'c': 'ccc'}
print(dd)
print('aa' in dd) # 判斷鍵是否在字典中,這里放回False;
print(dd.keys()) # 獲取所有鍵,用一個列表包裝;
print(dd.values()) # 獲取所有值,用一個列表包裝;
all_items = dd.items() # 獲取字典的所有鍵值對,鍵值對用元組包裝,多個鍵值對存放于列表中;
print(all_items) //輸出dict_items([('a', 'aaa'), ('b', 'bbb'), ('c', 'ccc')])
print(('a', 'aaa') in all_items) # 判斷是否包含鍵值對,這里返回True;
print(list(all_items)) # 將鍵值對轉換成列表
for i in all_items: # 本質上是在遍歷列表;
print(i)
print(list(dict1)) #這種只能看到key
多級字典
travel_catlog = {
"east_China": {
"hangzhou":["西湖旅游勝地", "5A"],
"shanghai":["夢的創造地","5A"],
},
"west_China": {
"dali":["溫文爾雅","3A"],
"chengdu":["天府之國","4A"]
},
"north_China": {
"beijing":["中國之最","5A"],
"tianjin":["想象之地","5A"]
},
"sourth_China":{
"hainan":["熱帶雨林水果之地","4A"],
"shenzheng":["科技之源","5A"]
},
}
print(travel_catlog["sourth_China"]["hainan"]) # 輸出該鍵的值:['熱帶雨林水果之地', '4A']
print(travel_catlog.values()) # 輸出第一層字典的所有值
print(travel_catlog.keys()) # 輸出第一層字典的所有鍵
print(travel_catlog.setdefault("sourth_China","hahahahah")) # 以鍵去字典里去找,如果找到則返回其鍵和值;如果沒有找到鍵,則按照代碼在該字典去創建一個記錄;
# 在字典中找到了,則顯示為:{'hainan': ['熱帶雨林水果之地', '4A'], 'shenzheng': ['科技之源', '5A']}
travel_catlog.setdefault("China","hahahahah")
# 在字典中沒有找到,則將其為字典添加為一個新的記錄;
print(travel_catlog)
# 判斷是否是字典的實例對象
d = {'a':'aaa','b':'bbb','c':'cccc'}
print(isinstance(d,dict)) # 輸出True
字典合并
a = {
's01':'Aa',
's02':'Bb',
's03':'Cc',
}
b = {
's02':'Bbbbb',
's04':'Dd',
}
a.update(b) # 把b合并于a,如果有重復的,把參數里的記錄覆蓋掉原來的;
print(a)
格式化生成字典
c = dict.fromkeys([1,2,3],['testd','hha','nihao']) # 格式化一個字典;參數:key,value,
# 每個key對應的value都是一樣的,因為對于每個key都是被value賦值
print(c)
字典循環、迭代
for key in a:
print(key,a[key])
for key,value in a.items(): # 先把dict轉成list;數據較大時莫用
print(key,value)
#只循環key
for i in dict1.keys():
print(i)
#只循環value
for i in dict1.values():
print(i)
字典生成式
語法: { 表達式 for 迭代變量 in 可迭代對象 [if 條件表達式] }
# 【例 1】
listdemo = ['C語言中文網','c.biancheng.net']
#將列表中各字符串值為鍵,各字符串的長度為值,組成鍵值對
newdict = {key:len(key) for key in listdemo}
print(newdict)
# 運行結果為:
# {'C語言中文網': 6, 'c.biancheng.net': 15}
#【例 2】交換現有字典中各鍵值對的鍵和值。
olddict={'C語言中文網': 6, 'c.biancheng.net': 15}
newdict = {v: k for k, v in olddict.items()}
print(newdict)
# 運行結果為:
# {6: 'C語言中文網', 15: 'c.biancheng.net'}
#【例 3】使用 if 表達式篩選符合條件的鍵值對。
olddict={'C語言中文網': 6, 'c.biancheng.net': 15}
newdict = {v: k for k, v in olddict.items() if v>10}
print(newdict)
# 運行結果為:
# {15: 'c.biancheng.net'}
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
