python中字典dict的操作技巧匯總

2021-03-02 生信修煉手冊

歡迎關注」生信修煉手冊」!

字典是使用最為廣泛的數據結構了,從結構來看,其內容就是鍵值對,鍵稱為key, 值稱為value, 類似詞典中通過前面的索引來快速查找後面的頁面,通過key可以快速定位對應的值。字典,是python中對這種結構的命名,在其他語言中有其他的名字,比如perl中稱之為哈希。

字典通過大括號或者dict函數來創建,用法如下

>>> a = {'one':1, 'tow':2, 'three':3}
>>> a
{'one': 1, 'tow': 2, 'three': 3}
>>> type(a)
<class 'dict'>

key和value之間用冒號分隔,多個鍵值對用逗號分隔。上述字典用dict函數創建的代碼如下

>>> a = dict((('one',1), ('tow',2), ('three',3)))
>>> a
{'one': 1, 'tow': 2, 'three': 3}
>>>
>>> a = dict(zip(['one', 'tow', 'three'], [1, 2, 3]))
>>> a
{'one': 1, 'tow': 2, 'three': 3}
>>>
>>>
>>> a = dict({'one':1, 'tow':2, 'three':3})
>>> a
{'one': 1, 'tow': 2, 'three': 3}

可以看到,dict函數更加靈活,支持多種寫法。字典中的key是無序且唯一的,不存在數字下標索引,要訪問其中的值,只能通過key來訪問,用法如下

>>> a = {'one':1, 'tow':2, 'three':3}
>>> a['one']
1

關於字典,內置了很多方法和函數,常用的幾種如下

1. 訪問字典元素

# 方括號加下標
>>> a = {'one':1, 'tow':2, 'three':3}
>>> a['one']
1
# get方法
>>> a.get('one')
1

2. 修改字典元素

# 可以重新賦值,也可以新增值
>>> a = {'one':1, 'tow':2, 'three':3}
>>> a['one'] = 2
>>> a
{'one': 2, 'tow': 2, 'three': 3}
# del 刪除元素
>>> del a['one']
# pop刪除元素
>>> a.pop("tow")
# 清空字典
>>> a.clear()

3. 遍歷字典

當我們遍歷字典的時候,本質是在遍歷字典的key和value, 通過以下函數可以方便的獲得字典的key或者value

# 返回所有key的列表
>>> a.keys()
dict_keys(['one', 'tow', 'three'])
# 返回所有values的列表
>>> a.values()
dict_values([1, 2, 3])
# 返回(key, value)構成的元組序列
>>> a.items()
dict_items([('one', 1), ('tow', 2), ('three', 3)])
# 返回所有key的列表
>>> list(a)
['one', 'tow', 'three']
# 返回所有key構成的迭代器
>>> iter(a)
<dict_keyiterator object at 0x035A9D20>
>>> for i in iter(a):
... print(i)
...
one
tow
three

在perl中,哈希的key都是字符串,而在python中,字典的key非常靈活,只要是不可變的對象都可以,比如數字,字符串,元組。利用元組,可以模擬多維字典,用法如下

>>> a = {(1, 2):'one', (3, 4):'tow'}
>>> a[(1,2)]
'one'

上面就是字典的基本用法,掌握了基礎,我們來看兩個在實際中經常使用的進階版字典

1. 值為列表的字典

python中不僅key很靈活,其value也很靈活。比如我們想要創建一個value為列表的字典,也是可以的

>>> a = {'one' : [1, 2, 3, 4, 5], 'tow':[1, 2, 3, 4, 5]}
>>> a
{'one': [1, 2, 3, 4, 5], 'tow': [1, 2, 3, 4, 5]}
>>> a['one']
[1, 2, 3, 4, 5]

直接寫,當然沒什麼難度,但是在實際工作中,經典的使用場景是循環給字典賦值,如果要實現值為列表,必須先將值設為一個空的列表,用法如下

>>> num = [1, 2, 3, 4, 5]
>>> a = {}
# 直接添加,報錯
>>> for i in num:
... a['one'].append(i)
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
KeyError: 'one'
# 先設定為空列表,在追加
# 結果ok
>>> a['one'] = []
>>> for i in num:
... a['one'].append(i)
...
>>>
>>> a
{'one': [1, 2, 3, 4, 5]}

可以看出,關鍵的問題是value的默認值,由於默認值不是列表,所以直接用append方法會報錯。為了解決問題,只需要將默認值設為列表就可以了。python有一個內置模塊collections, 提供了defaultdict函數,可以方便的設置默認值,用法如下

>>> from collections import defaultdict
>>> # 這裡的list表明key的默認value為list
>>> a = defaultdict(list)
>>> for i in num:
... a['one'].append(i)
...
>>>
>>> a
defaultdict(<class 'list'>, {'one': [1, 2, 3, 4, 5]})


用這種寫法更加優雅。

2. 嵌套的字典

所謂嵌套,就是有多級key, 類似

a[key1][key2] = value

通過設置value的默認值為dict, 可以方便的實現嵌套字典,用法如下

>>> a = defaultdict(dict)
>>> a['one']['tow'] = 1
>>> a['one']['three'] = 2
>>> a
defaultdict(<class 'dict'>, {'one': {'tow': 1, 'three': 2}})

上述寫法只支持兩個key的嵌套  在實際工作中已經可以滿足需求了,兩層以上的嵌套幾乎用不到。

原創不易,歡迎收藏,點讚,轉發!生信知識浩瀚如海,在生信學習的道路上,讓我們一起並肩作戰!本公眾號深耕耘生信領域多年,具有豐富的數據分析經驗,致力於提供真正有價值的數據分析服務,擅長個性化分析,歡迎有需要的老師和同學前來諮詢。

轉發本文至朋友圈,後臺私信截圖即可加入生信交流群,和小夥伴一起學習交流。

掃描下方二維碼,關注我們,解鎖更多精彩內容!

相關焦點

  • Python數據類型之字典dict
    # 字典是一種可變容器類型,可存儲任意類型對象# 字典以鍵值對存儲數據,key-value形式,鍵值之間使用冒號:分隔,每個鍵值中間用逗號,分隔# 字典包含在大括號,花括號{}中# python中鍵必須是不可變的,但值可取任何數據類型# 元組可以作為 dict 的 key,但列表不能作為元組的 key,dict 要求
  • Python 入門系列 —— 22. dict 的基本操作詳解
    訪問字典中的項 可以使用 [key] 的方式來訪問字典中的項,比如獲取下面字典中的 key=model 的值,代碼如下:thisdict = {  "brand": "Ford",  "model": "Mustang",  "year": 1964
  • 用Python字典刪除字典元素實際操作步驟
    用Python字典刪除字典元素實際操作步驟 本文章主要介紹的是Python字典在計算機語言應用過程中,如何更新字典,以及刪除字典元素和字典所需要的相關實際應用方案。
  • 零基礎學習Python字典操作
    Python 中,字典是一種可以將相關的兩個信息關聯起來的操作,並且字典可存儲的信息量幾乎不受限制,下面一起來跟小編學習一下如何訪問和使用字典中的信息吧!dict1 = {'name':'Jame','age':15}print(dict1)使用字典在 Python 中,字典是一系列鍵-值對,每個鍵都與一個值相關聯,我們可以通過鍵來訪問與之相關聯的值,與鍵相關聯的值可以是數字、字符串、列表、字典、或者任何 python 對象。
  • Python中字典(dict)的基本講解
    一:字典(dict)字典和前面講的列表與元組不太一樣,列表和元組都是一個有序的序列,但是字典是一個無序的可變的序列,並且字典中的元素以「鍵值對」的形式存在,可以方便快捷的進行查找元素。二:字典(dict)的創建字典使用花括號 { } 表示,花括號中的每個鍵值對使用冒號 :分割,然後每個對之間用逗號 , 分割,具體格式寫成下面的形式,dict={key1:value1,key2:value2,key3:value3}舉例如下:在字典的定義中,字典的鍵(key)可是是數字、字符串或是元組,字典的鍵(key)是唯一且不可變的
  • Python dict字典詳解
    字典中的鍵必須唯一字典中,不支持同一個鍵出現多次,否則只會保留最後一個鍵值對。字典中的鍵必須不可變字典中每個鍵值對的鍵是不可變的,只能使用數字、字符串或者元組,不能使用列表。Python 中的字典類型相當於 Java 或者 C++ 中的 Map 對象。和列表、元組一樣,字典也有它自己的類型。
  • python之dict字典數據類型講解
    前言python中有一種非常重要的數據類型就是dict字典。字典數據類型使用頻率是很廣泛的,其實字典數據類型非常類似於Java中的Map,JavaScript中的json。本文就重點講解dict字典。概念字典不同於其他數據類型,最重要的區別在於字典數據類型是通過一個key來去獲取對應的value。字典是通過鍵值對/key-value對聯繫起來的。語法字典的每個鍵值對使用「:」冒號進行分割,多個鍵值對使用「,」逗號分割。整個字典被一對「{}」包括起來。字典中的key必須要保證唯一,但是值可以重複。
  • Python字典裡的5個黑魔法
    閱讀本文大概需要5.8 分鐘Python裡面有3大數據結構:列表,字典和集合.字典是常用的數據結構,裡面有一些重要的技巧用法,我把這些都整理到一起,熟練掌握這些技巧之後,對自己的功力大有幫助.': 3, 'b': 2}最後要提醒一下:OrderedDict()雖然是好東西,但是它內部維護了一個雙向鍊表,若數據量很大的話,會非常消耗內存.
  • P022 python基礎:數據類型之字典dict01
    字典是python裡面非常重要的數據類型,它的結構類似json。它和json是可以互轉的。接下來我們學習字典dcit。
  • Python基礎知識儲備,字典dict的用法,花個幾分鐘時間學習它吧
    python開發1)字典基本介紹字典Dict中的每一個元素都是通過key-value鍵值對來表示,key用來標識一個元素,所以在字典中key不能相同,每個鍵值對用冒號 : 分割,每個對之間用逗號 , 分割,整個字典包括在大括號{ }中。
  • Python字典及基本操作(超級詳細)
    為了保存具有映射關係的數據,Python 提供了字典,字典相當於保存了兩組數據,其中一組數據是關鍵數據,被稱為 key;另一組數據可通過 key 來訪問,被稱為 value。形象地看,字典中 key 和 value 的關聯關係如圖 1 所示:
  • python字典的學習
    目錄1、字典的簡單介紹2、字典增刪改查和其他操作3、字典的嵌套一、字典的介紹字典是python中唯一的一個映射類型.在dict中key是唯一的. 在保存的時候, 根據key來計算出一個內存地址.然後將key-value保存在這個地址中. 這種算法被稱為hash算法, 所以, 切記, 在dict中存儲的key-value中的key'必須是可hash的, 如果你搞不懂什麼是可哈希, 暫時可以這樣記, 可以改變的都是不可哈希的,那麼可哈希就意味著不可變. 這個是為了能準確的計算內存地址而規定的.
  • Python dict字典方法完全攻略(全)
    ;> dir(dict)['clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']這些方法中,fromkeys() 和 get() 的用法已在《Python字典》中進行了介紹,這裡不再贅述,本節只給大家介紹剩下的方法。
  • 掌握Python字典的12個例子
    這些例子將涵蓋字典的特性,以及對它們進行操作的函數和方法。1.創建字典我們可以通過在大括號之間提供0個或多個鍵值對來創建字典。grades.values()dict_values(['A', 'A+', 'B', 'C', 'A'])我們不能對dict_keys 或dict_values進行索引操作,但我們可以將它們轉換為一個列表,然後使用索引。
  • python字典詳解-超級完整版
    : 2})f = dict({'one': 1, 'three': 3}, two=2)a == b == c == d == e == f03 字典鍵的特性字典值可以沒有限制地取任何python對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行,有特殊的要求,兩個重要的點需要記住:1)唯一性:不允許同一個鍵出現兩次,創建時如果同一個鍵被賦值兩次,後一個值會被記住
  • python新知識 字典視圖
    python新知識   字典視圖從bug中學習:字典返回的居然是視圖bug與之前相同,我在試圖從dataframe和series中提取值
  • Python——dict字典和set集合
    Python內置了字典:dict的支持,dict全稱dictionary,在其他語言中也稱為map,使用鍵-值(key-value)存儲,具有極快的查找速度。舉個例子,假設要根據同學的名字查找對應的成績,如果用list實現,需要兩個list:names = ['張三', '李四', '王五']scores = [95, 75, 85]給定一個名字,要查找對應的成績,就先要在names中找到對應的位置,再從scores取出對應的成績,list越長,耗時越長。
  • Python的集合與字典
    Python實例Dictionary(字典)字典(dictionary)是Python中另一個非常有用的內置數據類型。列表是有序的對象集合,字典是無序的對象集合。兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取。字典是一種映射類型,字典用"{ }"標識,它是一個無序的鍵(key) : 值(value)對集合。鍵(key)必須使用不可變類型。
  • 小白學 Python(12):基礎數據結構(字典)(上)
    嗯,這本字典看起來很有年代感了。那麼 Python 中的字典是什麼樣呢?比如我們嘗試將鍵變為數字:dict3 = dict(1 = 'geekdigging', 2 = 2)結果如下:File "D:/Development/Projects/python-learning/base-data-dict/Demo.py", line 13 dict3 = dict(1 = 'geekdigging
  • Python入門教程——數據類型之字典
    定義# 定義一個空字典dic = {}# 定義一個字典並初始化dict = {'name': 'python book', 'price': '$19.9', 'pages': 888}上述代碼,name、price、pages為鍵,python book、$19.9、888為值。