天天看點

collections.defaultdict() dict 差別 使用 dict.get() python 使用場景

  • 1 普通字典

    首先,看看python裡面的基礎字典使用,下面代碼會出錯,因為字典裡沒有key值"k2"存在。

d = {"k1": 123}
print(d["k2"])
           
  • 2 普通字典的get()

    python裡字典的get()方法擷取key的value,如果沒有key,傳回預設項,預設項可以是任意對象。

    但是,get方法不會改變字典本身。

    下面的代碼示範了這一原則。

d = {"k1": 123}
print(d.get('k2', 45))
print(d.get('k2', []))
print(d)
           

ouput:

45
[]
{'k1': 123}
           
  • 3 collections.defaultdict()

collections.defaultdict 在最初需要設定預設傳回的對象,當找不到key時候,自動建立一個鍵值對到原字典,原字典會改變。

from collections import defaultdict

d = defaultdict(int)
d['k1'] = 123
print("普通的", d)

print(d['k2'])
print("查找了一個不存在的key後的d", d)
           

output

普通的 defaultdict(<class 'int'>, {'k1': 123})
0
查找了一個不存在的key後的d defaultdict(<class 'int'>, {'k1': 123, 'k2': 0})
           
  • 4 collections.defaultdict() 的應用場景

做一些資料統計的時候,比如直方圖,統計每個類别有多少數量,開始也不知道有多少類别。

下面代碼示範了這一場景,統計s字元串中各個字母的數量個數。

from collections import defaultdict

s = 'mississippi'

d = defaultdict(int)

for k in s:
    d[k] += 1

print(d.items())
           

output

dict_items([('m', 1), ('i', 4), ('s', 4), ('p', 2)])