在 Python 中对字典值进行排序

问题描述 投票:0回答:1

我的数据结构如下:

Clients= {
      "data": [
        {
          "nClients": 3
        },
        {
          "name": "cTest1",
          "roll_no": 1,
          "branch": "c"
        },
        {
          "name": "fTest3",
          "roll_no": 3,
          "branch": "it3"          
        },
        {
          "name": "aTest2",
          "roll_no": 2,
          "branch": "it2"
        }
      ]
    }

我试图按键“名称”按字母顺序对其进行排序,以获得如下结果:

Clients= {
      "data": [
        {
          "nClients": 3
        },
        {
          "name": "aTest2",
          "roll_no": 2,
          "branch": "it2"          
        },
        {
          "name": "cTest1",
          "roll_no": 1,
          "branch": "c"
        },
        {
          "name": "fTest3",
          "roll_no": 3,
          "branch": "it3"
        }
      ]
    }

我一直在使用函数 sort()、dump() ecc 四处寻找,但找不到此操作的正确语法。有什么建议吗? 谢谢!

python json sorting alphabetical
1个回答
0
投票

你要排序的是一个

list
,它是
dict
键下
'data'
内的一个值。

您可以使用内置函数

sorted
,指定回调作为键:

Clients["data"] = sorted(Clients["data"], key=lambda x: x.get("name", ""))

或者

list
方法
sort
,它可以正常工作:

Clients["data"].sort(key=lambda x: x.get("name", ""))

两者都会导致:

{
    "data": [
        {"nClients": 3},
        {"name": "aTest2", "roll_no": 2, "branch": "it2"},
        {"name": "cTest1", "roll_no": 1, "branch": "c"},
        {"name": "fTest3", "roll_no": 3, "branch": "it3"},
    ]
}
© www.soinside.com 2019 - 2024. All rights reserved.