计算python字典中每个键的多个变量的频率

时间:2016-05-21 11:39:34

标签: python dictionary

我设法在字典中合并两个列表(一个代表键,另一个代表值),以便进一步计算值的频率。这给了我一个字典,每个键的列表中有多个值: enter image description here

我现在想要为每个密钥计算不同价值的总数,例如:在我的打印屏幕上,对于按键1068,有2个不同的按键(70803,70805)。 我试过这个: enter image description here

然而,它只给出了值出现的总时间,这不是我想要的。 由于我是一个非常初学者,我不知道如何继续(特别是那个带有列表的字典)

感谢所有人!

卢瓦克

2 个答案:

答案 0 :(得分:0)

如果我理解你的问题,以下应该可以解决问题:

for k, v in d.items():
    print(k, len(set(v)))

对于每个值列表,您可以创建一组元素并获取其长度。

答案 1 :(得分:0)

这是我的代码: 首先,我从两个列表中获得的词典:

from collections import defaultdict
keys = ['31', '53', '57', '57', '57', '82', '82', '82', '82', '82', '82',         '82', '82', '82','82']
values = ['70803', '70901', '70801', '70801', '70801', '70801', '70804',  '70812', '70812', '70812', '70812', '70813', '70813', '70813', '70813']

d = {}
for k,v in zip(keys, values):
 d.setdefault(k, []).append(v)
d

返回我:

 {'31': ['70803'],
'53': ['70901'],
'57': ['70801', '70801', '70801'],
'82': ['70801',
'70804',
'70812',
'70812',
'70812',
'70812',
'70813',
'70813',
'70813',
'70813']}

然后我想要计算每个键,它具有的不同值的数量。 当我尝试继续时:

from collections import Counter
from collections import defaultdict
d = {'31': ['70803'],
'53': ['70901'],
'57': ['70801', '70801', '70801'],
'82': ['70801',
'70804',
'70812',
'70812',
'70812',
'70812',
'70813',
'70813',
'70813',
'70813']}
for k, v in d.items():
   print(k, len(set(v))

它让我回复:

File "<ipython-input-5-f243768fffa2>", line 248
print(k, len(set(v))
                    ^

SyntaxError:解析时的意外EOF

所以我在这里:)我不知道如何继续进行