Python數據類型詳解——字典
引子
已經學習了列表,現在有個需求——把公司每個員工的姓名、年齡、職務、工資存到列表里,你怎么存?
staff_list = [
["Kwan",21,"CEO",1000000],
["小明",22,"人力",5000],
["LL",21,"財務",7000],
# [xxx,xx,xx,xxx]
# [xxx,xx,xx,xxx]
# [xxx,xx,xx,xxx]
]
以上面的形式存,沒問題。不過你要查某一個人的工資的話,就得遍歷這個列表了。
for i in staff_list:
if i[0] == '小明': # 查詢小明的信息
print(i)
break
但假如公司有20000人,如果你要查詢的這個人正好在列表的最后一個,那就意味著這個for循環得20000人全部走一遍,才能找到。列表越大,查找速度就會越慢。
此時,就需要用到Python語言中唯一得映射類型——字典(dict)。
一、定義
定義語法
:
{key1:value1, key2:value2}
(以
鍵值對
得形式定義,用
{}
括起來)
1、鍵(key)與值(value)之間用冒號
:
隔開。
2、鍵值對與鍵值對之間用
,
隔開。
示例:
info = {
'name':'Kwan',
'age':'21',
'blog_site':'https://cnblogs.com/Kwan-C/'
}
特性:
- key-value(鍵值對)結構
- key必須為不可變數據類型、必須唯一
- 可存放任意多個value、可修改、可以不唯一
- 字典是無序的
- 查詢速度塊,且不受字典大小的影響(至于為什么塊?學到hash時就懂了)
二、創建方法
# 第一種(最常用)
info = {'name':'Kwan', 'age':21}
# 第二種
info = dict(name='Kwan', age=21)
# 第三種
info = dict({'name':'Kwan', 'age':21})
# 第四種
s = {}.fromkeys(['name', 'age'],1) # 這種定義的結果為{'name': 1, 'age': 1}
三、增加操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
# 新增LL 直接添加
info['LL'] = [21, '財務', 7000]
# 或者使用setdefault
info.setdefault('LL', [21, '財務', 7000])
四、刪除操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
info.pop('Kwan') # 用pop()方法,刪除指定的key
info.popitem() # 用popitem()方法,隨機刪除一個key
del info['小明'] # 用del,刪除指定的key
info.clear() # 用clear()方法,清空該字典
五、修改操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
info['Kwan'][1] = 'boss' # 直接找到指定元素重新賦值即可
info['KK'] = '新來的' # 'KK'這個鍵(key)不存在于info中,此時就是添加操作了
info2 = {
'PP':[24, '銷售', 6000],
'UU':[23, '宣傳', 5000],
}
info.update(info2) # 將字典info2的鍵值對添加到字典info中
六、查操作
info = {
'Kwan':[21, 'CEO', 1000000],
'小明':[22, '人力', 5000],
}
a = info['Kwan'] # 返回字典中key為'Kwan'對應的值,若key不存在,則報錯
b = info.get('小明', default = None) # 返回地點中key為'小明'對應的值,若key不存在,則返回default的值(default默認值為None)
if 'Kwan' in info: # 用in方法,判斷key是否在字典中,存在則返回True,否則為False
print(info['Kwan'])
c = info.keys() # 返回一個包含字典所有key的列表
d = info.values() # 返回一個包含字典所有value的列表
e = info.items() # 返回一個包含所有(key, value)元組的列表
七、循環
info = {
"name":"Kwan",
"ahe":21,
"website": "https://cnblogs.com/Kwan-C/"
}
# 第一種
for k in info.keys(): # 遍歷字典所有的key
print(k, info[k])
# 第二種
for k, v in info.items(): # 遍歷字典所有的鍵值對
print(k, v)
# 第三種
for k in info: # 同第一種
print(k, info[k])
八、求取字典的長度
info = {
"name":"Kwan",
"ahe":21,
"website": "https://cnblogs.com/Kwan-C/"
}
print(len(info)) # 結果為字典中key的數量,info中key的數量為3
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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