Python中字典常用操作的示例詳解
前言
字典是Python必用且常用的數(shù)據(jù)結(jié)構(gòu),本文梳理常用的字典操作,看這個(gè)就夠了,涉及:
- 初始化
- 合并字典
- 字典推導(dǎo)式
- Collections 標(biāo)準(zhǔn)庫
- 字典轉(zhuǎn)JSON
- 字典轉(zhuǎn)Pandas
初始化
# 最常用這種 my_object = { "a": 5, "b": 6 } # 如果你不喜歡寫大括號和雙引號: my_object = dict(a=5, b=6)
合并字典
a = { "a": 5, "b": 5 } b = { "c": 5, "d": 5 } c = { **a, **b } #最簡單的方式 assert c == { "a": 5, "b": 5, "c": 5, "d": 5 } # 合并后還要修改,可以這樣: c = { **a, **b, "a": 10 } assert c == { "a": 10, "b": 5, "c": 5, "d": 5 } b["a"] = 10 c = { **a, **b } assert c == { "a": 10, "b": 5, "c": 5, "d": 5 }
字典推導(dǎo)式
# 使用字典推導(dǎo)式來刪除 key a = dict(a=5, b=6, c=7, d=8) remove = set(["c", "d"]) a = { k: v for k,v in a.items() if k not in remove } # a = { "a": 5, "b": 6 } # 使用字典推導(dǎo)式來保留 key a = dict(a=5, b=6, c=7, d=8) keep = remove a = { k: v for k,v in a.items() if k in keep } # a = { "c": 7, "d": 8 } # 使用字典推導(dǎo)式來讓所有的 value 加 1 a = dict(a=5, b=6, c=7, d=8) a = { k: v+1 for k,v in a.items() } # a = { "a": 6, "b": 7, "c": 8, "d": 9 }
Collections 標(biāo)準(zhǔn)庫
Collections 是 Python 中的一個(gè)內(nèi)置模塊,它有幾個(gè)有用的字典子類,可以大大簡化 Python 代碼。我經(jīng)常使用的其中兩個(gè)類,defaultdict 和 Counter。此外,由于它是 dict 的子類,因此它具有標(biāo)準(zhǔn)方法,如 items()、keys()、values() 等。
from collections import Counter counter = Counter() #counter 可以統(tǒng)計(jì) list 里面元素的頻率 counter.update(['a','b','a'] #此時(shí) counter = Counter({'a': 2, 'b': 1}) #合并計(jì)數(shù) counter.update({ "a": 10000, "b": 1 }) # Counter({'a': 10002, 'b': 2}) counter["b"] += 100 # Counter({'a': 10002, 'b': 102}) print(counter.most_common()) #[('a', 10002), ('b', 102)] print(counter.most_common(1)[0][0]) # => a
defaultdict 也是 dict 的必殺技:
from collections import defaultdict # 如果字典的 value 是 字典 a = defaultdict(dict) assert a[5] == {} a[5]["a"] = 5 assert a[5] == { "a": 5 } # 如果字典的 value 是列表 a = defaultdict(list) assert a[5] == [] a[5].append(3) assert a[5] == [3] # 字典的 value 的默認(rèn)值可以是 lambda 表達(dá)式 a = defaultdict(lambda: 10) assert a[5] == 10 assert a[6] + 1 == 11 # 字典里面又是一個(gè)字典,不用這個(gè),你要做多少初始化操作? a = defaultdict(lambda: defaultdict(dict)) assert a[5][5] == {}
字典轉(zhuǎn) JSON
我們通常說的 JSON 就是指 JSON 字符串,它是一個(gè)字符串。Dict 可以轉(zhuǎn)成 JSON 格式的字符串。
import json a = dict(a=5, b=6) # 字典轉(zhuǎn) JSON 字符串 json_string = json.dumps(a) # json_string = '{"a": 5, "b": 6}' # JSON 字符串轉(zhuǎn)字典 assert a == json.loads(json_string) # 字典轉(zhuǎn) JSON 字符串保存在文件里 with open("dict.json", "w+") as f: json.dump(a, f) # 從 JSON 文件里恢復(fù)字典 with open("dict.json", "r") as f: assert a == json.load(f)
字典轉(zhuǎn) Pandas
import pandas as pd # 字典轉(zhuǎn) pd.DataFrame df = pd.DataFrame([ { "a": 5, "b": 6 }, { "a": 6, "b": 7 } ]) # df = # a b # 0 5 6 # 1 6 7 # DataFrame 轉(zhuǎn)回字典 a = df.to_dict(orient="records") # a = [ # { "a": 5, "b": 6 }, # { "a": 6, "b": 7 } # ] # 字典轉(zhuǎn) pd.Series srs = pd.Series({ "a": 5, "b": 6 }) # srs = # a 5 # b 6 # dtype: int64 # pd.Series 轉(zhuǎn)回字典 a = srs.to_dict() # a = {'a': 5, 'b': 6}
到此這篇關(guān)于Python中字典常用操作的示例詳解的文章就介紹到這了,更多相關(guān)Python字典內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Pandas:DataFrame對象的基礎(chǔ)操作方法
今天小編就為大家分享一篇Pandas:DataFrame對象的基礎(chǔ)操作方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-06-06基于Python執(zhí)行dos命令并獲取輸出的結(jié)果
這篇文章主要介紹了基于Python執(zhí)行dos命令并獲取輸出的結(jié)果,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12numpy.std() 計(jì)算矩陣標(biāo)準(zhǔn)差的方法
今天小編就為大家分享一篇numpy.std() 計(jì)算矩陣標(biāo)準(zhǔn)差的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07在Python的while循環(huán)中使用else以及循環(huán)嵌套的用法
這篇文章主要介紹了在Python的while循環(huán)中使用else以及循環(huán)嵌套的用法,是Python入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下2015-10-10利用Python半自動化生成Nessus報(bào)告的方法
這篇文章主要介紹了利用Python半自動化生成Nessus報(bào)告的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-03-03django開發(fā)post接口簡單案例,獲取參數(shù)值的方法
今天小編就為大家分享一篇django開發(fā)post接口簡單案例,獲取參數(shù)值的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12python GUI庫圖形界面開發(fā)之PyQt5信號與槽事件處理機(jī)制詳細(xì)介紹與實(shí)例解析
這篇文章主要介紹了python GUI庫圖形界面開發(fā)之PyQt5信號與槽事件處理機(jī)制詳細(xì)介紹與實(shí)例解析,需要的朋友可以參考下2020-03-03