在词典列表中搜索

时间:2018-02-28 01:34:04

标签: python list dictionary search

我有一个词典列表。如何使用'label'来计算元素的数量:'car'

另外,如何创建一个包含'label'的所有元素的全新列表:'car'

result = [{'bottomright': {'x': 434, 'y': 102},
  'confidence': 0.3357535,
  'label': 'car',
  'topleft': {'x': 418, 'y': 88}},
 {'bottomright': {'x': 621, 'y': 120},
  'confidence': 0.55622935,
  'label': 'cup',
  'topleft': {'x': 580, 'y': 106}},
 {'bottomright': {'x': 136, 'y': 201},
  'confidence': 0.32227623,
  'label': 'truck',
  'topleft': {'x': 77, 'y': 166}},
 {'bottomright': {'x': 229, 'y': 235},
  'confidence': 0.3240861,
  'label': 'car',
  'topleft': {'x': 184, 'y': 198}},
 {'bottomright': {'x': 281, 'y': 265},
  'confidence': 0.63466769,
  'label': 'person',
  'topleft': {'x': 226, 'y': 220}},
 {'bottomright': {'x': 204, 'y': 286},
  'confidence': 0.54358166,
  'label': 'car',
  'topleft': {'x': 141, 'y': 233}},
 {'bottomright': {'x': 251, 'y': 331},
  'confidence': 0.70285547,
  'label': 'car',
  'topleft': {'x': 182, 'y': 253}},
 {'bottomright': {'x': 432, 'y': 361},
  'confidence': 0.74345809,
  'label': 'surfboard',
  'topleft': {'x': 370, 'y': 277}}]

2 个答案:

答案 0 :(得分:2)

尝试过滤功能:

len(list(filter(lambda dic: dic['label'] == 'car', result)))

要创建一个全新的列表,请执行以下操作:

list(filter(lambda dic: dic['label'] == 'car', result))

请记住在前面投射list转换器,因为filter会返回一个'过滤器对象'本身。

答案 1 :(得分:1)

尝试以下代码:

include_label_list = [i for i in result if i.get('label') == 'car']
counter = len(include_label_list)

你有一个新的列表,只有汽车标签,你的这个列表的计数器应该是这个新列表的长度!