为了账号安全,请及时绑定邮箱和手机立即绑定

如何在字典中返回某个值的频率列表

如何在字典中返回某个值的频率列表

小唯快跑啊 2021-08-05 14:54:24
所以我有一个 dict,其中包含与包含 str 的列表相对应的键。我想收集所述列表中的所有相同值并将它们相加。也许我的解释令人困惑,所以我将提供一个例子:function_name({'key1':['apple', 'orange'], 'key2':['orange', 'pear'})>>> {'apple':1, 'orange':2, 'pear':1}我将如何创建此功能?我正在考虑以某种方式制作这样的 for 循环:count = 0for fruit in dict_name:    if food == 'apple'        count = count + fruit我仍然不确定如何格式化它,尤其是如何计算值并收集它们,在此先感谢您的任何建议!
查看完整描述

3 回答

?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

您可以取消嵌套 dict 的值并应用Counter.


>>> from collections import Counter

>>> 

>>> d = {'key1':['apple', 'orange'], 'key2':['orange', 'pear']}

>>> Counter(v for sub in d.values() for v in sub)

Counter({'apple': 1, 'orange': 2, 'pear': 1})

如果您不喜欢嵌套生成器理解,可以使用itertools.chain.from_iterable.


>>> from itertools import chain

>>> Counter(chain.from_iterable(d.values()))

Counter({'apple': 1, 'orange': 2, 'pear': 1})

没有导入和传统循环,它看起来像这样:


>>> result = {}

>>> for sub in d.values():

...:    for v in sub:

...:        result[v] = result.get(v, 0) + 1

...:        

>>> result

{'apple': 1, 'orange': 2, 'pear': 1}


查看完整回答
反对 回复 2021-08-05
?
阿晨1998

TA贡献2037条经验 获得超6个赞

像这样的事情应该可以解决问题:


>>> from collections import Counter

>>> counts = Counter([item for sublist in your_dict.values() for item in sublist])


查看完整回答
反对 回复 2021-08-05
  • 3 回答
  • 0 关注
  • 129 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信