dict字典常用操作(python)

stay hungry*發表於2020-11-08

1.dict的增刪改查及初始化

1.1 dict的初始化

1.dict() 建構函式可以直接從鍵值對序列裡建立字典

>>> dict([('sape', 4139), ('guido', 4127), ('jack', 4098)])
{'sape': 4139, 'guido': 4127, 'jack': 4098}

2.字典推導式可以從任意的鍵值表示式中建立字典

>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}

3.當關鍵字是簡單字串時,有時直接通過關鍵字引數來指定鍵值對更方便

>>> dict(sape=4139, guido=4127, jack=4098)
{'sape': 4139, 'guido': 4127, 'jack': 4098}

1.2 dict的“增”

把資料放入dict的方法,除了初始化時指定外,還可以通過key直接放入:

>>> d = {}
>>> d['Adam'] = 67
>>> d['Adam']
67

1.3 dict的“刪”

要刪除一個key,用pop(key)方法(該函式返回值為key對應的value值),對應的value也會從dict中刪除。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d.pop('Bob')
75
>>> d
{'Michael': 95, 'Tracy': 85}

也可以用del 來刪除一個鍵值對。

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> del d['Bob']
>>> d
{'Michael': 95, 'Tracy': 85}

1.4 dict的“改”

可以通過key獲取其value直接對其進行賦值

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}
>>> d['Bob'] = 70
>>> d 
{'Michael': 95, 'Bob': 70, 'Tracy': 85}

1.5 dict的“查”

查詢時若key不存在:直接通過d[‘Thomas’]這種方式去獲取該key對應的value會報錯,要避免key不存在的錯誤,有兩種辦法,

  • 一是通過in判斷key是否存在:
>>> 'Thomas' in d
False
  • 二是通過dict提供的get()方法,如果key不存在,可以返回None,或者自己指定的value:
>>> d.get('Thomas')
>>> d.get('Thomas', -1)
-1

注意:返回None的時候Python的互動環境不顯示結果

查詢key,value

dic = {'name': 'chen', 'age': 25, 'loc': 'Tianjin'}

# 字典的keys()、value()方法的返回值是物件,不是列表
# 以列表的形式返回key
list(dic.keys())

# 以列表的形式返回value
list(dic.values())

# 迴圈key
for key in dic:
    print(key)
# 迴圈key
for key in dic.keys():
    print(key)
        
# 迴圈value,用value()方法可以將所有value取出
for value in dic.values():
    print(value)
    
# 當在字典中迴圈時,用items() 方法可將關鍵字和對應的值同時取出
for key, value in dic.items():
    print(key, value)

2.dict是無序的

對於dict的迭代需要注意的是:因為dict的儲存不是按照list的方式順序排列,所以,迭代出的結果順序很可能不一樣。(dict的標準規定不保證有順序,要保證有順序的請用OrderedDict)

from collections import OrderedDict
d = OrderedDict()

關於dict無序這個問題的探討,可以看看下面這篇,如果想深究,建議看一下原始碼,博主在這個地方沒深究過。
https://www.zhihu.com/question/65855807

3.其他

需要牢記的第一條就是dict的key必須是不可變物件

這是因為dict根據key來計算value的儲存位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的演算法稱為雜湊演算法(Hash)
在Python中,字串、整數等都是不可變的,因此,可以放心地作為key。如果一個元組只包含字串、數字或元組,那麼這個元組也可以用作關鍵字。但如果元組直接或間接地包含了可變物件,那麼它就不能用作關鍵字。列表不能用作關鍵字,因為列表可以通過索引、切片或append() 和extend() 之類的方法來改變。

參考:
廖雪峰的python教程,以及官方文件,強烈建議有問題找官方文件。
我這裡面有python3.8的中文官方文件可以自行獲取https://download.csdn.net/download/qq_38048756/13096127

相關文章