从字典列表中筛选最早CreateDate对应的KeyId并构造结果字典
提取最早创建的密钥信息
问题背景
系统返回的密钥元数据如下:
{'KeyMetadata': [ { 'UserName': 'thisusernameA', 'KeyId': 'ABCDE12345', 'CreateDate': datetime.datetime(2022,11, 30, 13, 7, 43, tzinfo=tzutc()) }, { 'UserName': 'thisusernameA', 'KeyId': 'CDEFG678911', 'CreateDate': datetime.datetime(2022,12, 9, 14, 50, 36, tzinfo=tzutc()) } ] }
需要提取最早创建的密钥的KeyId和CreateDate,最终返回格式如下:
{'KeyId': 'ABCDE12345', 'CreateDate': datetime.datetime(2022,11, 30, 13, 7, 43, tzinfo=tzutc())}
目前已经获取到最早的创建日期:
mylist=my_result["KeyMetadata"] seq = [x['CreateDate'] for x in mylist] my_oldest=min(seq)
请问接下来如何关联对应的KeyId并构造目标字典?
解决方案
你可以直接遍历mylist,找到CreateDate等于my_oldest的字典项,再提取需要的字段构造新字典:
# 找到对应最早日期的密钥条目 oldest_key = next(item for item in mylist if item['CreateDate'] == my_oldest) # 构造目标字典 result_dict = {'KeyId': oldest_key['KeyId'], 'CreateDate': oldest_key['CreateDate']}
或者用更高效的方式,不用单独提取日期列表,直接借助min函数的key参数一步定位最早条目:
mylist = my_result["KeyMetadata"] # 直接根据CreateDate找到最早的密钥条目 oldest_key = min(mylist, key=lambda x: x['CreateDate']) # 构造目标字典 result_dict = {'KeyId': oldest_key['KeyId'], 'CreateDate': oldest_key['CreateDate']}
这种方式省去了二次遍历的步骤,代码更简洁高效。
内容的提问来源于stack exchange,提问作者DennisZ
相关产品推荐
相关产品推荐

