python中怎么对json数组按json的某个字段进行排序

发布于 2022-09-02 10:29:44 字数 386 浏览 15 评论 0

我有一个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"}]

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

空气里的味道 2022-09-09 10:29:44

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

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}]
谁与争疯 2022-09-09 10:29:44

首先题目中有个错误:"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'])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文