2015-10-19 61 views
-2

我的字典看起来像如何在字典数组中找到具有特定值的字典数?

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

我想找到的10有“age”这个数组中的项目数的数组。我正在寻找与lenset(我想避免使用for循环)的单线解决方案。谢谢。

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

如果我想找到一个独特的“年龄”的数量?

回答

3

对于计数:

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

对于独特:

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

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

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

OP说,他们希望避免使用循环。此解决方案不成立。 – idjaw

0

这里是一个班轮:

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