【问题标题】:Sorting Nested JSON in Python在 Python 中对嵌套的 JSON 进行排序
【发布时间】:2021-09-24 02:54:52
【问题描述】:

python3中是否可以根据key“age”对下面这种嵌套的json进行排序

{
   "barcelona":[
      {
         "age":29,
         "name":"john"
      }
   ],
   "london":[
      {
         "age":23,
         "name":"bob"
      }
   ],
   "mancherster":[
      {
         "age":23,
         "name":"shaw"
      }
   ],
   "paris":[
      {
         "age":45,
         "name":"bony"
      },
      {
         "age":16,
         "name":"paul"
      }
   ]
}

提前感谢您的回复

【问题讨论】:

  • 是的,这是可能的。你试过什么?
  • 我尝试了以下 json_str = {"barcelona":[{"age":29,"name":"john"}],"london":[{"age":23,"姓名":"鲍勃"}],"曼彻斯特":[{"age":66,"name":"shaw"}],"巴黎":[{"age":23,"name":"bony" },{"age":44,"name":"paul"}]} print(json_str) json_obj = json.loads(json.dumps((json_str))) by_age = { key: sorted(value, key=lambda v: v['age']) for key, value in json_obj.items() } print(by_age)
  • ` json_str = {"barcelona":[{"age":29,"name":"john"}],"london":[{"age":23,"name": "bob"}],"mancherster":[{"age":66,"name":"shaw"}],"paris":[{"age":23,"name":"bony"},{ “年龄”:44,“姓名”:“保罗”}]}打印(json_str)json_obj = json.loads(json.dumps((json_str)))
    by_age = {键:排序(值,键= lambda v: v['age']) for key, value in json_obj.items() } print(by_age)`
  • 请编辑您的问题以包含所有相关信息。不要在 cmets 中发布重要信息。

标签: json python-3.x sorting


【解决方案1】:

我想您只想对每个城市的列表进行排序?在这种情况下,这应该有效:

import json   

json_str = "<your json string>"
json_obj = json.loads(json_str)
by_age = { key: sorted(value, key=lambda v: v['age']) for key, value in json_obj.items() }

顺便说一句,您发布的 JSON 中有错误 - 不允许使用尾随逗号(在这种情况下,"name": "whatever", 末尾的逗号)。您需要删除它们以避免在json.loads 调用时出错。

【讨论】:

  • 您好 Magnus,感谢您的回复。我想根据 AGE 对整个 JSON 列表进行排序。
  • 我尝试了以下代码,但结果仍然没有排序 code import json json_str = {"barcelona":[{"age":29,"name":"john"}], "伦敦":[{"age":23,"name":"bob"}],"mancherster":[{"age":66,"name":"shaw"}],"paris":[{ “年龄”:23,“姓名”:“骨头”},{“年龄”:44,“姓名”:“保罗”}]}打印(json_str)json_obj = json.loads(json.dumps((json_str)) ) by_age = { key: sorted(value, key=lambda v: v['age']) for key, value in json_obj.items() } print(by_age)
  • 嗯,你的 JSON 包含一个字典,而不是一个列表。所以我不确定你在寻找什么结果。 age 是列表 ("people") 中包含的字典 ("person") 中的一个键,它再次分配给字典 ("cities") 中的键。我的代码对“人”进行排序,这是您 JSON 中唯一的列表。
猜你喜欢
  • 2019-05-05
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
相关资源
最近更新 更多