python中怎么对json数组按json的某个字段进行排序
大家讲道理
大家讲道理 2017-04-17 17:23:06
[Python讨论组]

我有一个json数组,我想对数组以json中的某个字段排序,这个如何做到?
比如:

json_array=[{"time":"20150312","value":"c"},        
{"time":"20150301","value":"a"},
{"time":"20150305","value":"b"}]

python是否提供相应api方法对以上数组的“time”字段按升序排列,最后数组的结果是:

json_array=[{"time":"20150301","value":"a"},
{"time":"20150305","value":"b"},
{"time":"20150312","value":"c"}]
大家讲道理
大家讲道理

光阴似箭催人老,日月如移越少年。

全部回复(2)
PHP中文网

还有种更优雅直观的方法,一行就可以搞定:

json_array = [{"time":20150312,"value":"c"}, {"time":20150301,"value":"a"}, {"time":20150305,"value":"b"}]

json_array.sort(key = lambda x:x["time"])

运行结果:

print(json_array)
[{'value': 'a', 'time': 20150301}, {'value': 'b', 'time': 20150305}, {'value': 'c', 'time': 20150312}]
PHP中文网

首先题目中有个错误:"time":"201503012"应该是:"time":"20150312
另外按照时间排序的话,我经常这样写:

from datetime import datetime
def my_cmp(a,b):
    a_time = datetime.strptime(a,'%Y%m%d')
    b_time = datetime.strptime(b,'%Y%m%d')
    return 1 if a > b  else -1 if a < b else 0
json_array=[{"time":"20150312","value":"c"},        
{"time":"20150301","value":"a"},
{"time":"20150305","value":"b"}]

print sorted(json_array, cmp=my_cmp, key=lambda x:x['time'])
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号