python - 按值对具有 3 个嵌套字典的列表进行排序
问题描述
按值排序嵌套字典列表的答案 不适用于更多嵌套数据,例如
[
{
"primary_key": 228282,
"success": "YES",
"date": "2020-10-09T10:10:33.123456",
"spec": "text text text",
"details": {
"quality": "228.33",
"measure": {
"title": "kilo",
"sign": "kg"
}
},
"address_from": "NY",
"address_to": "CA",
},
...
]
如果我想按“日期”排序,则会出现错误:
[item for item in lis if isinstance(item['date'], str)],
KeyError: 'date'
在这种情况下如何按日期排序?
https://www.dropbox.com/s/2wc44gv9puwjd8t/228.json?dl=0我有 .json 文件。我的尝试:
import json
with open("operations.json", "r", encoding='utf-8') as read_file:
lis = json.load(read_file)
print(lis)
print(
sorted(
[item for item in lis if isinstance(item['date'], str)],
key=lambda i: i['date']
)
)
解决方案
如果其中items
没有operations.json
日期键,您可以定义一个默认值(None
例如):
import json
with open("operations.json", "r", encoding='utf-8') as read_file:
lis = json.load(read_file)
print(
sorted(
[item for item in lis if isinstance(item.get('date', None), str)],
key=lambda i: i['date']
)
)
出去:
[{'primary_key': 228282, 'success': 'YES', 'date': '2020-10-09T10:10:33.123456', 'spec': 'text text text', 'details': {'quality': '228.33', 'measure': {'title': 'kilo', 'sign': 'kg'}}, 'address_from': 'NY', 'address_to': 'CA'}]
解释:
item.get('date', None)
,尝试访问date
,如果不可用,请使用None
推荐阅读
- python - 如何获得无界类方法
- unity3d - Unet 同步动画层权重 Unity 3D
- c# - 如何通过绑定在 WPF UserControl 中引用自定义属性值?
- javascript - 如何将javascript数组转换为对象
- javascript - Angular 使用深度嵌套的 json 创建响应式表单
- python - np.block 不能将 (1,2) 数组与 (1,1) 数组连接在同一行
- c - TAIL递归计算谐波级数?
- c# - C# Selenium - 无头浏览器
- javascript - Promise 仅返回已解析的值
- javascript - 用于角度服务注入的未定义“this”实例