我正在尝试查找每个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 = 1000
,0
的答案为case_id = 1021
。
答案 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
将是1
而False
将是0
。因此,(obj['type'] == 'email_response')
的结果将添加case_id
词典中result
的当前值。