У меня есть следующая структура данных:
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() и т. д., но не смог найти правильный синтаксис для этой операции. Любое предложение? Спасибо!






То, что вы хотите отсортировать, — это list, значение внутри dict под ключом 'data'.
Вы можете использовать встроенную функцию sorted, указав в качестве ключа обратный вызов:
Clients["data"] = sorted(Clients["data"], key=lambda x: x.get("name", ""))
Или метод listsort, который работает на месте:
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"},
]
}