[英]Python sort a json based on a key inside an array of dictionary
我有这样的结构:
[{
"name": "apple",
"price": "5.0",
"record": [
{
"id": "008",
"time": 1465689600
}
]
},{
"name": "banana",
"price": "9.0",
"record": [
{
"id": "002",
"time": 1465682600
}
]
}]
我在下面尝试过,但是给了我一个错误:字符串索引必须是整数。
sorted(lines, key=lambda k: k['record'].get('time', 0),reverse=True)
如何根据“时间”值对以上内容进行排序?
谢谢。
显然,您的结构是一个字符串。 您需要使用json.loads
将其转换为python对象
import json
d = "[{'record': [{'id': '008', 'time': 1465689600}], 'price': '5.0', 'name': 'apple'}, {'record': [{'id': '002', 'time': 1465682600}], 'price': '9.0', 'name': 'banana'}]"
lines = json.loads(d)
sorted(lines, key=lambda k: k['record'][0].get('time', 0), reverse=True)
# ^
此后,键'record'
的值是一个列表。 该列表在索引0处有一个dict
对象。因此,您需要先访问dict对象,然后才能访问字典的值。
由于这是一个json,因此我将使用json.loads
对其进行json.loads
:
import json
lines = '''
[{
"name": "apple",
"price": "5.0",
"record": [
{
"id": "008",
"time": 1465689600
}
]
},{
"name": "banana",
"price": "9.0",
"record": [
{
"id": "002",
"time": 1465682600
}
]
}]
'''
d = json.loads(lines)
for x in sorted(d, key=lambda k: k['record'][0].get('time', 0), reverse=True):
print x
输出:
{u'record': [{u'id': u'008', u'time': 1465689600}], u'price': u'5.0', u'name': u'apple'}
{u'record': [{u'id': u'002', u'time': 1465682600}], u'price': u'9.0', u'name': u'banana'}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.