九個(gè)必須知道的Python字典騷操作
字典,python數(shù)據(jù)結(jié)構(gòu)中的大殺器,是另一種可變?nèi)萜髂P?,且可存?chǔ)任意類型對(duì)象。字典是 除列表以外 Python 之中 最靈活 的數(shù)據(jù)類型。字典可以用來 存儲(chǔ)多個(gè)數(shù)據(jù)。通常用于存儲(chǔ)描述一個(gè)物體的相關(guān)信息。
下面分享9個(gè)實(shí)用的字典操作,歡迎大家點(diǎn)贊、收藏、支持!
1. 鍵是否存在
d = {"name": "Tony", "age":100}
key = "phone"
if key in d:
print("Key exists")
else:
print("Not exists")
# Key exists
值得注意的是:不要用 key in d.keys()。這是一個(gè)多余的操作,因?yàn)?nbsp;d.keys() 會(huì)返回一個(gè)新的列表對(duì)象,導(dǎo)致使用內(nèi)存變大。
2. 合并字典
# example 1
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
d = {**d1, **d2}
print(d) # {'a': 1, 'b': 3, 'c': 4}
print(d1) # {'a': 1, 'b': 2}
print(d2) # {'b': 3, 'c': 4}
# example 2
d1 = {'a': 1, 'b': 2}
d2 = {'b': 3, 'c': 4}
d2.update(d1)
print(d1) # {'a': 1, 'b': 2}
print(d2) # {'a': 1, 'b': 2, 'c': 4}
值得注意的是:第一個(gè)例子,d1 和 d2 不會(huì)被修改,并且相同的key不會(huì)被重新賦值。第二個(gè)例子,d2 被 d1更新,相同的key會(huì)被重新賦值。
3. 遍歷字典
# method 1
d = {'c': 3, 'd': 4, 'a': 1, 'b': 2}
for key, value in d.items():
print(key, value) # c 3 d 4 a 1 b 2
# method 2
d = {'c': 3, 'd': 4, 'a': 1, 'b': 2}
for key in d:
print(key, d[key]) # c 3 d 4 a 1 b 2
方法一中 d.items() 需要返回一個(gè)額外的 dict_items 對(duì)象。
4. 字典推導(dǎo)式
fruits = ['apple', 'mango', 'banana','cherry']
d = {f:len(f) for f in fruits} # 類似于列表推導(dǎo)式
print(d) # {'apple': 5, 'mango': 5, 'banana': 6, 'cherry': 6}
5. 字典排序
字典本質(zhì)上是一個(gè)無序的容器對(duì)象(從Python 3.6開始支持順序,但是這個(gè)順序是指key添加的順序)。我們可以使用 lambda 函數(shù)作為排序鍵按鍵或值對(duì)字典進(jìn)行排序。
d = {"c": 3, "a": 1, "f":6, "b": 0}
# 按key排序
sorted(d.items(), key=lambda x:x[0]) # [('a', 1), ('b', 0), ('c', 3), ('f', 6)]
# 按value排序
sorted(d.items(), key=lambda x:x[1]) # [('c', 3), ('f', 6), ('b', 0), ('a', 1)]
6. 用字典計(jì)數(shù)
# method 1
chars = ['a', 'b','c','a','d','c']
d = {}
for c in chars:
d[c] = d.get(c, 0) + 1
print(d) # {'a': 2, 'b': 1, 'c': 2, 'd': 1}
# method 2
import collections
chars = ['a', 'b','c','a','d','c']
d = collections.Counter(chars)
print(d) # Counter({'a': 2, 'b': 1, 'c': 2, 'd': 1})
7. 刪除字典中的鍵值對(duì)
d = {'ob1':'computer', 'ob2':'mouse', 'ob3':'printer'}
# 刪除指定的鍵值對(duì)
del d['ob1']
print(d) # {'ob2': 'mouse', 'ob3': 'printer'}
# 刪除所有的鍵值對(duì)
d.clear()
print(d) # {}
8. 同長(zhǎng)度的2個(gè)list轉(zhuǎn)換為字典
stocks = ['reliance', 'infosys', 'tcs']
prices = [2175, 1127, 2750]
d = dict(zip(stocks, prices))
print(d) # {'reliance': 2175, 'infosys': 1127, 'tcs': 2750}
9. 字典的復(fù)制
# 淺復(fù)制
d = {'a': 1, 'b': 2}
x = d # 只是引用 ?? 改變x也會(huì)改變d!
x.update({'c': 3})
print(x) # {'a': 1, 'b': 2, 'c': 3}
print(d) # {'a': 1, 'b': 2, 'c': 3}
x.clear()
print(x) # {}
print(d) # ()
# 深復(fù)制
d = {'a': 1, 'b': 2}
x = d.copy() #復(fù)制了一份,改變x不會(huì)改變d
x.update({'c': 3})
print(x) # {'a': 1, 'b': 2, 'c': 3}
print(d) # {'a': 1, 'b': 2}
x.clear()
print(x) # {}
print(d) # {'a': 1, 'b': 2}
小節(jié)
上面分享的9個(gè)python字典操作,希望對(duì)你有所幫助!