<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 高手都這樣使用字典,這些高效方法你知道嗎?|pythonic 小技巧

          共 2936字,需瀏覽 6分鐘

           ·

          2021-03-24 16:16

          字典(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 = [123]
          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)

          七、字典推導式

          列表推導式和字典推導式是我相當喜歡的功能,簡潔高效。mapfilter 我都已經快不會用了。

          l = [123]
          {n: n * n for n in l}
          {112439}

          以上。

          希望對你能有幫助,歡迎關注公眾號 AlwaysBeta,更多技術干貨等你來。

          題圖: 由 fdsfe67854 在 Pixabay 上發(fā)布。

          往期精彩:


          瀏覽 88
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  免费在线a| 亚洲高清无码播放 | 淫婷婷| 大香蕉女主播操逼祝频 | 小早川怜子 无码 在线 |