Python 高手都這樣使用字典,這些高效方法你知道嗎?|pythonic 小技巧
字典(dict)對象是 Python 最常用的數據結構之一。
社區(qū)曾有人開玩笑地說:「Python 企圖用字典裝載整個世界?!?/p>
可見其有多重要,不用多說,我平時用的也很多,索性總結一下,把一些常用的方法寫下來,分享給大家。
一、字典創(chuàng)建
# 1、創(chuàng)建空字典
a = {}
b = dict()
# 2、有初始值,從輸入的便利程度來說,我更喜歡第二種
a = {'a': 1, 'b': 2, 'c': 3}
b = dict(a=1, b=2, c=3)
# 3、key 來自一個列表,而 value 相同, 使用 fromkeys,那是相當的優(yōu)雅
keys = ['a', 'b', 'c']
value = 100
d = dict.fromkeys(keys, value)
# 4、key 來自一個列表,而 value 也是一個列表,使用 zip
keys = ['a', 'b', 'c']
values = [1, 2, 3]
d = dict(zip(keys, values))
二、字典合并
m = {'a': 1}
n = {'b': 2, 'c': 3}
# 合并,兩種方式
# 1、使用 update
m.update(n)
# 2、使用 **
{**m, **n}
三、判斷 key 是否存在
在 Python2 中判斷某個 key 是否存在,可以使用 has_key,但這個方法在 Python3 中已經被移除了。
另一種方法是使用 in 關鍵字,不僅兼容 Python2 和 Python3,速度還更快,強烈推薦。
d = {'a': 1, 'b': 2}
if 'a' in d:
print('hello')
四、獲取字典中的值
d = {'a': 1, 'b': 2}
# 1、直接用 key 取值,但這種方式不好,如果 key 不存在會報錯,推薦使用 get
a = d['a']
# 2、使用 get,如果 key 不存在還可以賦默認值
a = d.get('a')
c = d.get('c', 3)
五、字典遍歷
d = {'a': 1, 'b': 2, 'c': 3}
# 遍歷 key
for key in d.keys():
pass
# 遍歷 value
for value in d.values():
pass
# 遍歷 key 和 value
for key, value in d.items():
pass
六、字典按 key 或 value 排序
d = {'a': 1, 'b': 2, 'e': 9, 'c': 5, 'd': 7}
# 按 key 排序
sorted(d.items(), key=lambda t: t[0])
# 按 key 倒序
sorted(d.items(), key=lambda t: t[0], reverse=True)
# 按 value 排序
sorted(d.items(), key=lambda t: t[1])
還有一個需求是我在開發(fā)過程經常碰到的,就是有一個列表,列表的元素是字典,然后按字典的 value 對列表進行排序。
l = [{'name': 'a', 'count': 4}, {'name': 'b', 'count': 1}, {'name': 'd', 'count': 2}, {'name': 'c', 'count': 6}]
sorted(l, key=lambda e: e.__getitem__('count'))
# 倒序
sorted(l, key=lambda e: e.__getitem__('count'), reverse=True)
七、字典推導式
列表推導式和字典推導式是我相當喜歡的功能,簡潔高效。map 和 filter 我都已經快不會用了。
l = [1, 2, 3]
{n: n * n for n in l}
{1: 1, 2: 4, 3: 9}
以上。
希望對你能有幫助,歡迎關注公眾號 AlwaysBeta,更多技術干貨等你來。
題圖: 由 fdsfe67854 在 Pixabay 上發(fā)布。
往期精彩:
評論
圖片
表情
