如何在字典列表中找到出现次数

时间:2015-03-18 03:06:51

标签: python list dictionary

我正在尝试查找每个case_id在下面的示例中出现email_response的次数:

json_obj = [{
    'case_id': 1000,
    'type': 'email',
    'customer_id': 42571,
    'date': '2015-01-20',
},
    {
    'case_id': 1000,
    'type': 'email_response',
    'customer_id': 42571,
    'date': '2015-01-21',
},
    {
    'case_id': 1021,
    'type': 'email',
    'customer_id': 88686,
    'date': '2015-01-24',
}]

因此,在这种情况下,1的答案为case_id = 10000的答案为case_id = 1021

1 个答案:

答案 0 :(得分:1)

您可以创建另一个字典并继续像这样更新计数

>>> result = {}
>>> for obj in json_obj:
...     if obj['type'] == 'email_response':
...         result[obj['case_id']] = result.get(obj['case_id'], 0) + 1
...         
>>> result
{1000: 1, 1021: 0}

由于我们将0作为第二个参数传递,如果找不到要检索的密钥,dict.get方法将返回0,否则将返回与该密钥对应的实际值。你也可以这样做

>>> result = {}
>>> for obj in json_obj:
...     result[obj['case_id']] = result.get(obj['case_id'], 0) + (obj['type'] == 'email_response')
...     
>>> result
{1000: 1, 1021: 0}

由于Python的布尔值是int的子类,True将是1False将是0。因此,(obj['type'] == 'email_response')的结果将添加case_id词典中result的当前值。