python - 如何查找字典列表中出现的次数

标签 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',
}]

因此,在本例中,case_id = 1000 的答案为 1case_id = 1021 的答案为 0 >.

最佳答案

您可以创建另一个字典并继续更新计数,如下所示

>>> 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 方法找不到要检索的 key ,它将返回 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 的 bool 值是 int 的子类,因此 True 将是 1False 将是 0 。因此,(obj['type'] == 'email_response') 的结果将与 resultcase_id 的当前值相加> 字典。

关于python - 如何查找字典列表中出现的次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29113470/

相关文章:

python - mxnet(胶子): cpu used when gpu(0) context selected

python - 无法在 Sikuli 中导入 PIL

python 饼图回溯

python - 提取列表中找到的子列表的索引

java - 类别/子类别 : How to get all subcategories(their subcategories too) for given category?

python - 将文本中的值替换为 python 字典中的整数值并求其总和

python - 用其他项目替换 python 列表理解中 dict 中的单个值

Python 以太坊区 block 链交易

c# - 将列表转换为列表<string>

c++ - 从 initializer_list 错误构造 std::map