【问题标题】:Python save a list of dictionaries to json file ordered by dictionary field valuePython将字典列表保存到按字典字段​​值排序的json文件中
【发布时间】:2019-01-16 15:42:25
【问题描述】:

我有一个字典列表。字典的字段之一是"name"。我正在将此字典列表保存到文件中:使用命令

json.dump(myList, fileName, indent=4)

但它没有按我的意愿保存。由于list data-structure 是一个允许排序的结构,如何将其保存为按字典元素字段排序的json数组?

例如考虑这个字典列表:

l =[{'name':'c', 'val' : 9},{'name': 'a', 'val': 10}, {'name': 'b', 'val': 10}, {'name': 'aa', 'val': 10}]

我想输出一个像这样的json:

[
    {
        "name": "a",
        "val": 10
    },
    {
        "name": "aa",
        "val": 10
    },
    {
        "name": "b",
        "val": 10
    },
    {
        "name": "c",
        "val": 9
    }
]

【问题讨论】:

  • 请注意,其中许多答案在 Python3 中不起作用,而仅在 Python2 中起作用,因为字典发生了变化。出于这个原因,我认为它不是重复的
  • keys()values() 等字典方法不再返回 list(但如果我没记错的话,views),例如解决方案 sorted(a, key=dict.values, reverse=True) 无效。
  • @这不能解决你的问题,你不是按 all 值排序 - 你是按一个键的值排序......所以你这样做 l.sort(key=lambda d:d.get("name") 并完成.
  • 这可能是一个更好的骗局:how-do-i-sort-a-list-of-dictionaries-by-a-value-of-the-dictionary .. 对我来说这是python sort list of dict by attribute 在谷歌上的第一次点击,还有 2-5 个其他人在浮动导致相同的解决方案 - 现在有3-6个。

标签: json python-3.x list dictionary save


【解决方案1】:

您可以使用内置的sorted 命令按特定键排序。我认为这里有很多这样的例子,但专门针对您的问题:

l = sorted(l, key=lambda l: l['name'])
print(l)
# [{'name': 'a', 'val': 10},
#  {'name': 'aa', 'val': 10},
#  {'name': 'b', 'val': 10},
#  {'name': 'c', 'val': 9}]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-22
    • 2013-02-19
    • 2022-12-15
    相关资源
    最近更新 更多