【问题标题】:Sort JSON by field other than Key按 Key 以外的字段对 JSON 进行排序
【发布时间】:2017-12-17 11:19:05
【问题描述】:

我有一个要排序的 JSON 字符串。我想按'Name' 字段对其进行排序。我一辈子都找不到这样做的代码。

未排序:

{"RU": {"Name": "Russian", "TextDirection": "ltr"}, "FR": {"Name": "French", "TextDirection": "ltr"}, "AR": {"Name": "Arabic", "TextDirection": "rtl"}}

排序:

{"AR": {"Name": "Arabic", "TextDirection": "rtl"}, "FR": {"Name": "French", "TextDirection": "ltr"}, "RU": {"Name": "Russian", "TextDirection": "ltr"}}

更新:

正如@jonrsharpe 和@martineau 指出的那样。我需要使用数组或列表。我不太关心结构。最初弄乱排序顺序的是转换为 json。通过使用数组代替,json 并没有弄乱排序顺序。

[{"Code": "AR", "Name": "Arabic", "TextDirection": "rtl"}, {"Code": "FR", "Name": "French", "TextDirection": "ltr"}, {"Code": "RU", "Name": "Russian", "TextDirection": "ltr"}]

【问题讨论】:

  • JSON 对象(以及它们映射到的 Python 字典)没有保证顺序,因此不清楚您的意思。
  • @jonrsharpe:我删除了对 key 的引用。
  • 你认为你为什么想要这个?
  • 因为我想要这个排序。我将其传递回 javascript 以加载选择对象。
  • 同样,对象没有排序。如果顺序很重要,请将它们放在一个数组中。

标签: python json sorting


【解决方案1】:

您可以使用 OrderedDict 在 Python 中实现带有有序键的字典。

但是,您不能保证 JSON 对象会被其他应用程序按顺序加载,因为字典本质上没有排序(哈希表)。

因此,对键进行迭代不能保证您的顺序,除非您为 Python 和 JavaScript 使用特定的类,或者如果您将字典放入顺序为静态的数组中。

https://docs.python.org/3/library/collections.html#collections.OrderedDict

How do I sort a list of dictionaries by values of the dictionary in Python?

【讨论】:

  • 第二个链接与此问题无关,不涉及列表。
  • 这是之前在答案中给出的线索的参考。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-13
  • 1970-01-01
  • 2018-12-07
  • 2016-03-23
  • 1970-01-01
  • 2015-03-11
相关资源
最近更新 更多