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

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