首页 > 解决方案 > “查询”字典的 Pythonic 方式

问题描述

我有一个嵌套字典,其中包含有关书籍的数据:

这是定义:

books = {
    'uid1':
        {'price': '100',
        'condition': 'good'},
    'uid2':
        {'price': '80',
        'condition': 'fair'},
    'uid3':
        {'price': '150',
        'condition': 'excellent'},
    'uid4':
        {'price': '70',
        'condition': 'fair'},
    'uid5':
        {'price': '180',
        'condition': 'excellent'},
    'uid6':
        {'price': '60',
        'condition': 'fair'}
    }

我需要得到按条件分组的平均价格。所以,预期的结果是:

{'fair': 70, 'good': 100, 'excellent': 165}

最Pythonic的方法是什么?

标签: pythonpython-3.xpandasdictionarypandas-groupby

解决方案


使用collections.defaultdict

演示:

from collections import defaultdict

res = defaultdict(list)
for k,v in books.items():
    res[v['condition']].append(int(v['price'])) 

print({k: sum(v)/len(v) for k, v in res.items() })

输出:

{'good': 100, 'fair': 70, 'excellent': 165}

推荐阅读