下面有一个字典列表,如
my_dictionary = [
{
'name': 'Tester',
'id': '101',
'status': 'Failed',
'lastModifiedDate': '2022-02-14 12:25:32:013302' },
{
'name': 'Developer',
'id': '102',
'status': 'Success',
'lastModifiedDate': '2022-02-14 12:25:32:013302',
},
{
'name': 'Tester',
'id': '101',
'status': 'Failed',
'lastModifiedDate': '2022-02-21 12:25:32:013302' }
]
- 我有两个
name
值作为Tester
或Developer
- 通过检查最新的
lastModifiedDate
需要为Tester
,Developer
提取最新条目
下面代码实现的逻辑如下:
- 首先根据
lastModifiedDate
降序排列。 - 提取字典列表中的第一个匹配项。
response = sorted(my_dictionary, key=lambda x: x['lastModifiedDate'], reverse=True)
response_latest = []
for item in response:
extracted_response = {}
for field in item:
if item['name'] == 'Tester':
extracted_response[field] = item[field]
response_latest.append(extracted_response)
break
for field in item:
if item['name'] == 'Developer':
extracted_response[field] = item[field]
response_latest.append(extracted_response)
break
response_latest
上面的代码在输入上面的字典列表时的输出是
[{'name': 'Tester',
'id': '101',
'status': 'Failed',
'lastModifiedDate': '2022-02-21 12:25:32:013302'}]
但预期的输出是
[{'name': 'Tester',
'id': '101',
'status': 'Failed',
'lastModifiedDate': '2022-02-21 12:25:32:013302'},
{'name': 'Developer',
'id': '102',
'status': 'Success',
'lastModifiedDate': '2022-02-14 12:25:32:013302'}]
此外,如果缺少 Developer
或 Tester
字典名称值,代码不应失败。
my_dictionary = [{'name': 'Tester', 'id': '101', 'status': 'Failed', 'lastModifiedDate': '2022-02-14 12:25:32:013302'},
{'name': 'Tester', 'id': '101', 'status': 'Failed', 'lastModifiedDate': '2022-02-21 12:25:32:013302'}]
最佳答案
如果 pandas
正在运行:
import pandas as pd
df = pd.DataFrame(myd)
maxes = df.groupby('name')['lastModifiedDate'].transform('max')
result = df[df['lastModifiedDate'] == maxes].to_dict(orient='records')
输出:
>>> result
[{'name': 'Developer', 'id': '102', 'status': 'Success', 'lastModifiedDate': '2022-02-14 12:25:32:013302'}, {'name': 'Tester', 'id': '101', 'status': 'Failed', 'lastModifiedDate': '2022-02-21 12:25:32:013302'}]
关于python - 如何通过检查最新的时间戳和值从字典列表中提取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71210609/