如何在字典数组中找到具有特定值的字典数?

时间:2015-10-19 18:04:49

标签: python

我有一系列看起来像

的词典
a = [
  {'name': 'a', 'age':10},
  {'name': 'b', 'age':10},
  {'name': 'c', 'age':15},
  {'name': 'd', 'age':10}
]

我想找到此数组中包含" age"的项目数。 10。我正在寻找一个lenset的单行解决方案(我想避免使用for循环)。感谢。

=================

如果我想找到独特的"年龄"

的数量,该怎么办?

4 个答案:

答案 0 :(得分:3)

对于计数:

len(list(filter(lambda x: x['age'] == 10, a)))

独特:

len(set(map(lambda x: x['age'], a)))

答案 1 :(得分:0)

len([x for x in lst if x['age'] == 10])

答案 2 :(得分:0)

您使len()具有列表理解 -

len([item for item in lst if item['age'] == 10])

从技术上讲,这仍然是for循环,但会比Python中的传统for循环快一点。

示例运行 -

>>> lst = [{'name': 'a',
... 'age':10
... },
... {'name': 'b',
... 'age':10
... },
... {'name': 'c',
... 'age':15
... },
... {'name': 'd',
... 'age':10
... }]

>>> len([item for item in lst if item['age'] == 10])
3

答案 3 :(得分:0)

这是一个班轮:

number_of_people = sum( person['age'] == 10 for person in list_of_people)