from collections import defaultdict multi_dict = defaultdict(list) key_values = [('even',2),('odd',1),('even',8),('odd',3),('float',2.4),('odd',7)] for key,value in key_values: multi_dict[key].append(value) print(multi_dict) # 會輸出defaultdict(<class 'list'>, {'float': [2.4], 'even': [2, 8], 'odd': [1, 3, 7]})
但是
若我們想要直接給予一個固定的值給defaultdict是不行的,會產生TypeError的例外,比如說是在統計元素個數的狀況下,我想要讓default值為0,那有一個方法就是建構一個生成0的函數:
from collections import defaultdict def zero(): return 0 counter_dict = defaultdict(zero) # default值以一個zero()方法產生 a_list = ['a','b','x','a','a','b','z'] for element in a_list: counter_dict[element] += 1 print(counter_dict) # 會輸出defaultdict(<function zero at 0x7fe488cb7bf8>, {'x': 1, 'z': 1, 'a': 3, 'b': 2})
這是一種方法, 但是不夠簡潔, 可用:
沒有留言:
張貼留言