Python中defaultdict 的使用

2021-10-05 11:31:27 字數 2309 閱讀 6126

(1)類似於c++的stl中的map,可以自定義字典的value型別,比如 dict = defaultdict(list),dict = defaultdict(int)

(1)自定義字典的value為列表(list),當訪問乙個key不存在時,將會為這個key自動建立乙個新的list,大小為空

from collections import defaultdict

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]

d = defaultdict(list) # 新建乙個以list為預設value的字典

for k, v in s: # 儲存每個水果中的數字

sorted(d.items()) # 按照字典的key排序

print(d.items())

# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

(1)自定義字典的value為整數(int),當訪問乙個key不存在時,將會為這個key自動建立乙個新的int,值為0

(2)當訪問乙個存在的key時,將會返回那個已經存在的int,此時可以進行add等操作

s = 'mississippi' # 乙個多個重複字元的字串

d = defaultdict(int) # 新建乙個以list為預設value的字典

for k in s: # 儲存每個字元出現的個數,注意這裡的每個字元初始個數為0

d[k] += 1

sorted(d.items()) # 按照字典的key排序

print(d.items())

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

(1)自定義字典的value為集合(set),當訪問乙個key不存在時,將會為這個key自動建立乙個新的set,大小為空

(2)當訪問乙個存在的key時,將會返回那個已經存在的set,此時可以進行add等操作

# set

s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]

d = defaultdict(set) # 新建乙個以set為預設value的字典

for k, v in s: # set中只儲存不重複的元素

d[k].add(v)

sorted(d.items()) # 按照字典的key排序

print(d.items())

# [('blue', ), ('red', )]

# list

from collections import defaultdict

s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]

d = defaultdict(list) # 新建乙個以list為預設value的字典

for k, v in s: # 儲存每個水果中的數字

sorted(d.items()) # 按照字典的key排序

print(d.items())

# [('blue', [2, 4]), ('red', [1]), ('yellow', [1, 3])]

# int

s = 'mississippi' # 乙個多個重複字元的字串

d = defaultdict(int) # 新建乙個以list為預設value的字典

for k in s: # 儲存每個字元出現的個數,注意這裡的每個字元初始個數為0

d[k] += 1

sorted(d.items()) # 按照字典的key排序

print(d.items())

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

# set

s = [('red', 1), ('blue', 2), ('red', 3), ('blue', 4), ('red', 1), ('blue', 4)]

d = defaultdict(set) # 新建乙個以set為預設value的字典

for k, v in s: # set中只儲存不重複的元素

d[k].add(v)

sorted(d.items()) # 按照字典的key排序

print(d.items())

# [('blue', ), ('red', )]

python中 python中的 與

這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...

python中否定for 在python中否定函式

有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...

python中雙重迴圈 加速Python中的雙迴圈

有沒有辦法加快從上一次迭代更新其值的雙迴圈?在 中 def calc n,m x 1.0 y 2.0 container np.zeros n,2 for i in range n for j in range m x np.random.gamma 3,1.0 y y 4 y np.random....