這是我的函數:Python中的多路頻率函數?
def freq(*var):
from functools import reduce
from operator import getitem
for c,i in enumerate(reversed(var)):
d={k:0 for k in set(i)} if c==0 else {k:d for k in set(i)}
for row in zip(*var):
*k,last_k=row
reduce(getitem,k,d)[last_k]+=1
return d
var
論點看起來像(['a','b','b','c'],['one','two','two','two'])
我試圖返回保存頻率計數嵌套的字典。所以導致d
應該是這樣的:
{'a':{'one':1, 'two':0}, 'b':{'one':0, 'two':2}, 'c':{'one':0, 'two':1}}
但是我的函數返回,這是錯誤的:
{'a': {'one': 1, 'two': 3}, 'b': {'one': 1, 'two': 3}, 'c': {'one': 1, 'two': 3}}
任何想法,爲什麼?
在給定的嵌套級別的每個字典都是相同的字典。 – user2357112