这是我的函数: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