<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python 關(guān)于字典的操作,看這個就夠了

          共 2655字,需瀏覽 6分鐘

           ·

          2022-05-16 15:37

          字典是 Python 必用且常用的數(shù)據(jù)結(jié)構(gòu),本文梳理常用的字典操作,看這個就夠了,涉及:

          • 初始化
          • 合并字典
          • 字典推導(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 中的一個內(nèi)置模塊,它有幾個有用的字典子類,可以大大簡化 Python 代碼。我經(jīng)常使用的其中兩個類,defaultdict 和 Counter。此外,由于它是 dict 的子類,因此它具有標(biāo)準(zhǔn)方法,如 items()、keys()、values() 等。

          from?collections?import?Counter

          counter?=?Counter()
          #counter?可以統(tǒng)計?list?里面元素的頻率
          counter.update(['a','b','a']
          #此時?counter?=?Counter({'a':?2,?'b':?1})

          #合并計數(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

          #?字典里面又是一個字典,不用這個,你要做多少初始化操作?
          a?=?defaultdict(lambda:?defaultdict(dict))
          assert?a[5][5]?==?{}

          字典轉(zhuǎn) JSON

          我們通常說的 JSON 就是指 JSON 字符串,它是一個字符串。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}

          最后的話

          以上就是字典的常用方式,希望對你有所幫助,歡迎點贊、轉(zhuǎn)發(fā)、收藏。

          推薦閱讀:

          為什么 Python3.6 之后字典是有序的

          瀏覽 18
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  操日本熟妇| 久久亚洲免费视频 | 看操年轻小媳妇逼毛片视频 | 91黄色电影 | 日本成人福利 |