假设我有一本字典:
thisdict = {
"1": ['Vanilla','Chocolate']
"2": ['Vanilla']
"7": ['Chocolate']
"8": ['Chocolate','Vanilla']
}
(注意: key 是 ID 号)
我想查看特定列表出现的频率,而不考虑元素的顺序。所以我希望我的结果是:
['Chocolate','Vanilla'] = 2
['Chocolate'] = 1
['Vanilla'] = 1
我该怎么做?
现在我尝试了,Chief 是字典的名称,我想找到以下值的频率:
track = {}
for key,value in chief.items():
if value not in track:
track[value]=0
else:
track[value]+=1
print(track)
但是列表不可散列,因此它不起作用。
非常感谢您的帮助!
最佳答案
看起来您想以顺序无关紧要的方式计算值。您可以转换为集合,但集合不可散列,这使得转换变得有点困难。您可以使用 frozenset ,它是可散列的,并且允许 ['Chocolate','Vanilla']
与 ['Vanilla','Chocolate']
计数相同:
from collections import Counter
thisdict = {
"1": ['Vanilla','Chocolate'],
"2": ['Vanilla'],
"7": ['Chocolate'],
"8": ['Chocolate','Vanilla']
}
counts = Counter(map(frozenset, thisdict.values()))
counts
将是一个计数器实例,例如:
Counter({frozenset({'Chocolate', 'Vanilla'}): 2,
frozenset({'Vanilla'}): 1,
frozenset({'Chocolate'}): 1})
关于python - 计算字典中特定列表的频率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59079947/