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

所以我有一个 dict,其中包含与包含 str 的列表相对应的键。我想收集所述列表中的所有相同值并将它们相加。也许我的解释令人困惑,所以我将提供一个例子:


function_name({'key1':['apple', 'orange'], 'key2':['orange', 'pear'})

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

我将如何创建此功能?我正在考虑以某种方式制作这样的 for 循环:


count = 0

for fruit in dict_name:

    if food == 'apple'

        count = count + fruit

我仍然不确定如何格式化它,尤其是如何计算值并收集它们,在此先感谢您的任何建议!


小唯快跑啊
浏览 131回答 3
3回答

慕桂英3389331

您可以取消嵌套 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}

阿晨1998

像这样的事情应该可以解决问题:>>> from collections import Counter>>> counts = Counter([item for sublist in your_dict.values() for item in sublist])
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python