首页 > 解决方案 > 有没有办法搜索列表中有多少个字典有两个特定值?

问题描述

例如

mylist = [{'animal': 'dog', 'price': 30, 'name': 'snowball'}, {'animal': 'cat', 'price': 40, 'name': 'max'}, {'animal': dog, 'price': 30, 'name': 'fido'}]

我知道如何使用以下方法查找列表中有多少个字典具有一个参数

n_dogs = sum(x.get('animal') == 'dog' for x in mylist)

返回2, 对于列表中的 2 条狗。

现在我将如何查找列表中有多少条目是价格为 的狗30

将不胜感激任何帮助:)

标签: pythonlistdictionary

解决方案


这是我的解决方案:

sum([x['animal'] == 'dog' and x['price'] == 30 for x in mylist])

但我认为,如果您使用数据,更优雅的方式是使用 pandas:

import pandas as pd

mylist = [{'animal': 'dog', 'price': 30, 'name': 'snowball'}, {'animal': 'cat', 'price': 40, 'name': 'max'}, {'animal': dog, 'price': 30, 'name': 'fido'}]

df = pd.DataFrame(mylist)
print(df[(df.animal == 'dog') & (df.price == 30)])

推荐阅读