中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python字典詳解

發布時間:2020-05-24 00:42:03 來源:網絡 閱讀:2053 作者:奇貓 欄目:編程語言

字典是Python中唯一的內建的映射類型,可以存儲任意對象的容器,比如:字符串,列表,元組,自定義對象等;字典由鍵(key)與值(value)組成,基本語法如下:

{key:value, ... ...}
字典中每個Key是唯一的,key必須是可哈希(后面我們介紹);

這節我們來看下字典基本知識點:

1>字典定義、遍歷、修改;
2>理解字典key;
4>字典相關函數;

1.字典定義與訪問

1.1 直接定義字典:

stocks = {'000001':'平安銀行', '000002':'萬科A', '000025':'特力A'}
#000001,000002,000025為key;對應的平安銀行,萬科A,特力A為value

1.2 使用dict方法:

dict是Python的字典類,可以使用字典相關方法定義字典,具體如下:

#列表或者元組中每個元素必須為列表或者元組且長度為2
phoneprice = [['小米8青春版',1699], ['華為P20',3188], ['VIVOX23', '2798']]
pdict = dict(phoneprice)
print(pdict)

1.3 使用fromkeys方法:

方法:dict.fromkeys(iterable, value=None),說明:

1>將可迭代對象轉成字典,字典key為迭代對象每個元素,值為value;
2>iterable必須為可迭代對象,value默認值為None

具體操作如下:

#字符串
kstr = 'abcd'
dstr = dict.fromkeys(kstr, 1)
print('dstr:',dstr)
#列表:
klist = ['python','java','C++']
dlist = dict.fromkeys(klist, 0)
print(dlist)

這些就是字典初始化常用的方式。

1.4 字典訪問:

1)使用key獲取值:

stocks = {'000001':'平安銀行', '000002':'萬科A', '000025':'特力A'}
#通過key訪問對應value
print(stocks['000002'])
print("stocks[{}]:{}".format('000002', stocks['000002']))

輸出結果:

萬科A
stocks[000002]:萬科A

2)遍歷字典:
通過for循環可以獲取字典所有key,具體如下:

stocks = {'000001':'平安銀行', '000002':'萬科A', '000025':'特力A'}
#遍歷為字典所有key
for key in stocks:
    print(key)

輸出結果:

000001
000002
000025

可以通過Key獲取對應的Value:

stocks = {'000001':'平安銀行', '000002':'萬科A', '000025':'特力A'}
#獲取為字典所有key
for key in stocks:
    print(key, stocks[key])

輸出結果:

000001 平安銀行
000002 萬科A
000025 特力A

1.5 字典修改:

1)直接修改:

#用戶名密碼
userinfo = {'uname':'admin', 'pwd':'admin123'}
print(userinfo)
#修改密碼
userinfo['pwd'] = 'abcd1234'
print(userinfo)

輸出結果:

{'uname': 'admin', 'pwd': 'admin123'}
{'uname': 'admin', 'pwd': 'abcd1234'}

2)添加值:

#用戶名密碼
userinfo = {'uname':'admin', 'pwd':'admin123'}
print(userinfo)
#添加手機號
userinfo['phonenum'] = '15022332233'
print(userinfo)

輸出結果:

{'uname': 'admin', 'pwd': 'admin123'}
{'uname': 'admin', 'pwd': 'admin123', 'phonenum': '15022332233'}

2 字典Key

1)字典key是唯一的:

#result中有兩個first
result = {'first':'zhang','Second':'sun', 'first':'li'}
#first對應值?
print(result['first'])

輸出結果:li,字典中每個key是唯一的,但是value可以相同;

2)字典key必須是不可改變對象:
我們怎么來理解key不可改變?數字,字符串,元組都是不可改變對象,他們可以為key,換一個列表試試:

info = {}
info[[1,2,3]] = 1

輸出結果:

<ipython-input-36-9ce2e27f396d> in <module>
      1 info = {}
----> 2 info[[1,2,3]] = 1

TypeError: unhashable type: 'list'

觸發異常,因為列表是不可hash對象。
所以更好說的說法應該是字典key必須是可以hash對象。不可變的對象才能被hash。
我們可以直接使用hash這個函數看下處理結果:

print(hash('a'))
print(hash(1))
print(hash((1,2,3)))

輸出結果:

-99564674986098144
1
2528502973977326415

不同對象的hash值都是唯一的,且hash對象必須是不可改變的。

3)字典key為什么要hash?
字典添加訪問過程可以簡單理解為下圖(內部實現可能更加復雜):
python字典詳解
根據這個簡單示意圖我們知道key必須可以hash的原因,字典這種實現方式能夠很快的找到查找元素。
所以字典的key必須是不可改變的。

4)考驗下,我們是否真的理解了?

info = {1:'one', 1.0:'frist'}
info

字典info是什么值,大家可以在評論區寫出結果。

3.字典常用操作:

1)in:判斷key是否在字典中;
抖音上找了幾個作品,我們來判斷下:

songs= {'虎二':'不僅僅是喜歡', '摩登兄弟':'走馬', '西瓜妹':'花橋流水','M哥':'我的將軍啊'}
print('面筋哥' in songs)
print('M哥' in songs)

輸出結果:False,True

2)len:獲取字典長度;

songs= {'虎二':'不僅僅是喜歡', '摩登兄弟':'走馬', '西瓜妹':'花橋流水','M哥':'我的將軍啊'}
print(len(songs))

輸出結果:4
3)del:刪除元素;

songs= {'虎二':'不僅僅是喜歡', '摩登兄弟':'走馬', '西瓜妹':'花橋流水','M哥':'我的將軍啊'}
#刪除key為虎二的元素
del songs['虎二']
print(songs)

輸出結果:{'摩登兄弟': '走馬', '西瓜妹': '花橋流水', 'M哥': '我的將軍啊'}

4.字典常用方法詳解:

4.1.獲取字典key與元素:

主要方法如下:

方法 說明
D.keys() 獲取字典所有ley
D.values() 獲取字典所有value
D.items() 獲取字典所有item

相關操作如下:

songinfo = {'虎二':'不僅僅是喜歡', '摩登兄弟':'走馬', '西瓜妹':'花橋流水','M哥':'我的將軍啊'}
songer = songinfo.keys()
print(songer)
songs = songinfo.values()
print(songs)
items = songinfo.items()
print(items)

```輸出結果:
dict_keys(['虎二', '摩登兄弟', '西瓜妹', 'M哥'])
dict_values(['不僅僅是喜歡', '走馬', '花橋流水', '我的將軍啊'])
dict_items([('虎二', '不僅僅是喜歡'), ('摩登兄弟', '走馬'), ('西瓜妹', '花橋流水'), ('M哥', '我的將軍啊')])

遍歷字典幾種方式:
```Python
songinfo= {'虎二':'不僅僅是喜歡', '摩登兄弟':'走馬', '西瓜妹':'花橋流水','M哥':'我的將軍啊'}
#獲取keys,然后遍歷
#與for key in songs類似
ks = songinfo.keys()
for k in ks:
    print(k, songinfo[k])
print('======')
#獲取字典所有items,然后遍歷
for key, value in songinfo.items():
    print(key, value)

輸出結果:

虎二 不僅僅是喜歡
摩登兄弟 走馬
西瓜妹 花橋流水
M哥 我的將軍啊
======
虎二 不僅僅是喜歡
摩登兄弟 走馬
西瓜妹 花橋流水
M哥 我的將軍啊

4.2 獲取Key對應value

方法 說明
D.get(k[,d]) 如果k在D中存在,返回D[k],否則返回d,d默認值為None
D.setdefault(k[,d]) 如果k在D中存在,返回D[k],否則D[k]=d

具體操作如下:

userinfo= {'uname':'lucy', 'pwd':'aabbcc'}
print(userinfo)
#獲取用戶名
print('{}:{}'.format('uname',userinfo.get('uname')))
#獲取用戶年齡
print('{}:{}'.format('age',userinfo.get('age')))
#如果密碼不存在,設置默認密碼,否則返回存在密碼
print('{}:{}'.format('pwd',userinfo.setdefault('pwd', '123456')))
#如果用戶年齡不存在,設置默認值
print('{}:{}'.format('age',userinfo.setdefault('age', 1)))
#設置之后,查看字典內容:
print(userinfo)

輸出結果:

{'uname': 'lucy', 'pwd': 'aabbcc'}
uname:lucy
age:None
pwd:aabbcc
age:1
{'uname': 'lucy', 'pwd': 'aabbcc', 'age': 1}

4.3 字典刪除

方法 說明
D.pop(k[,d]) 詳細解釋看表格下方
D.popitem() 刪除并返回一對key-value,字典為空報錯
D.clear() 刪除字典所有元素

D.pop(k[,d]) 詳解:

1>k為刪除鍵,d為給定返回值;
2>若k存在,刪除k并返回k對應value;
3>若k不存在,且d有值,返回d;
4>若k不存在,且沒有給定d,觸發異常;

1)使用pop刪除:

#數字貨幣價格:瑞波幣,以太坊,比特幣
BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
print(BiPrice)
#刪除瑞波幣
print('XRP price:',BiPrice.pop('XRP'))
#刪除后結果:
print('刪除后結果:', BiPrice)
#刪除EOS,如果不存在,返回2$
print('EOS price:',BiPrice.pop('EOS', '$2'))

輸出結果:

{'XRP': '$0.36557', 'ETH': '$113.60', 'BTC': '$ 4031.6'}
XRP price: $0.36557
刪除后結果: {'ETH': '$113.60', 'BTC': '$ 4031.6'}
EOS price: $2

刪除不存在key:

#數字貨幣價格:瑞波幣,以太坊,比特幣
BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
BiPrice.pop('BCH')

運行結果:

KeyError                                  Traceback (most recent call last)
<ipython-input-77-2507cf08400a> in <module>
      1 #數字貨幣價格:瑞波幣,以太坊,比特幣
      2 BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
----> 3 BiPrice.pop('BCH')

KeyError: 'BCH'

刪除不存在元素,報錯。
2)使用popitem刪除:

#數字貨幣價格:瑞波幣,以太坊,比特幣
BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
print(BiPrice)
print('popitem:',BiPrice.popitem())
print('刪除后結果:', BiPrice)

輸出結果:

{'XRP': '$0.36557', 'ETH': '$113.60', 'BTC': '$ 4031.6'}
popitem: ('BTC', '$ 4031.6')
刪除后結果: {'XRP': '$0.36557', 'ETH': '$113.60'}

3)使用clear清空字典:

BiPrice = {'XRP':'$0.36557', 'ETH':'$113.60', 'BTC':'$ 4031.6'}
print(BiPrice)
BiPrice.clear()
print('clear后結果:', BiPrice)

運行結果:

{'XRP': '$0.36557', 'ETH': '$113.60', 'BTC': '$ 4031.6'}
clear后結果: {}

4.4 字典更新方法:

方法 說明
D.update([E, ]**F) 更新字典 ,E為Key-value可迭代對象或者字典

我們來分析這個方法:

1>如果E為字典,for k in E: D[k] = E[k];
2>如果E為可迭代對象,for k, v in E: D[k] = v;
3>如果**F,for k in F: D[k] = F[k];(**F為可變長關鍵字參數))

相關操作如下:

#一局王者榮耀5V5,某方英雄選擇最開始兩個:
heros = {'白起':'上路','嬴政':'中路'}
#添加射手:
heros.update({'劉備':'射手'})
print('增加劉備:',heros)
#添加夏侯惇與鬼谷子
heros.update([('夏侯惇', '上路'), ('鬼谷子', '輔助')])
print('增加兩個:', heros)
#更改夏侯惇分路
heros.update([('夏侯惇', '打野')])
print('更改屬性:', heros)

輸出結果:

增加劉備: {'白起': '上路', '嬴政': '中路', '劉備': '射手'}
增加兩個: {'白起': '上路', '嬴政': '中路', '劉備': '射手', '夏侯惇': '上路', '鬼谷子': '輔助'}
更改屬性: {'白起': '上路', '嬴政': '中路', '劉備': '射手', '夏侯惇': '打野', '鬼谷子': '輔助'}

到這里我們對字典就有了基本認識,可以使用字典來解決工作和學習中的問題。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

凤山县| 珠海市| 西丰县| 宝应县| 尼木县| 宁陕县| 拉孜县| 五华县| 双城市| 兴海县| 九台市| 大理市| 新河县| 靖江市| 新野县| 庆安县| 铁岭县| 来宾市| 禄丰县| 习水县| 巴东县| 安化县| 太和县| 修武县| 东丰县| 台北县| 清丰县| 疏附县| 康定县| 成武县| 周宁县| 保山市| 洛扎县| 新晃| 孟州市| 伊金霍洛旗| 西峡县| 吴旗县| 常山县| 阳江市| 原平市|