我有这样的结构:
[{
"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)
如何根据"时间"对上述内容进行排序?值?
感谢。
答案 0 :(得分:0)
显然,你的结构是一个字符串。您需要使用json.loads
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对象,然后才能访问该字典的值。
答案 1 :(得分:0)
由于这是一个json,我只想使用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'}