首页 > 解决方案 > Python - 从嵌套列表中提取值

问题描述

我有一个如下所示的列表:

[{'id': 'id_123',
  'type': 'type_1',
  'created_at': '2020-02-12T17:45:00Z'},
 {'id': 'id_124',
  'type': 'type_2',
  'created_at': '2020-02-12T18:15:00Z'},
 {'id': 'id_125',
  'type': 'type_1',
  'created_at': '2020-02-13T19:43:00Z'},
 {'id': 'id_126',
  'type': 'type_3',
  'created_at': '2020-02-13T07:00:00Z'}]

我试图找出type : type_1发生了多少次以及该列表中最早的created_at时间戳是什么type_1

标签: pythonpython-3.xlist

解决方案


我们可以通过几个步骤来实现这一点。

要查找发生的次数type_1,我们可以将内置函数filteritemgetter.

from operator import itemgetter

def my_filter(item):
    return item['type'] == 'type_1'

key = itemgetter('created_at')

items = sorted(filter(my_filter, data), key=key)
print(f"Num records is {len(items)}")
print(f"Earliest record is {key(items[0])}")

Num records is 2
Earliest record is 2020-02-12T17:45:00Z

相反,您可以使用生成器理解,然后对生成器进行排序。

gen = (item for item in data if item['type'] == 'type_1')
items = sorted(gen, key=key)
# rest of the steps are the same...

推荐阅读