python - 如何通过检查最新的时间戳和值从字典列表中提取

标签 python sorting dictionary

下面有一个字典列表,如

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 值作为 TesterDeveloper
  • 通过检查最新的 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'}]

此外,如果缺少 DeveloperTester 字典名称值,代码不应失败。

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/

相关文章:

python - FFmpeg 在确认后返回“必须指定输出”

javascript - 根据 [i] 对数组 [i][0]、[i][1] 进行排序

php - 为什么 array_unique 对值进行排序?

c# - 将字典值转换为数组

Python 字典,其值作为 pandas DataFrame 的元组

c++ - 在 SWIG 中将可变 char * 传递给 Python

python - 为什么从PyHive包导入hive后出现 "ImportError: No module named builtins"?

python - .INI 文件中一个标题下的键、值

python - 将 DataFrame 过滤为重复项并计算结果的分组均值

c - 结构体的合并排序