python - 对列表中的字典元素进行排序

标签 python list sorting dictionary

对于这个列表,

[{u'status': u'Active', u'name': u'X', u'orgID': u'109175', u'type': u'Created Section','class': 'addbold'} , 
{u'status': u'Active', u'name': u'A', u'orgID': u'109175', u'type': u'Created Section', 'class': 'addbold'} ,
{u'status': u'Active', u'name': u'G', u'orgID': u'109175', u'type': u'Created Section', 'class': 'addbold'} ,
{u'status': u'Active', u'name': u'D', u'orgID': u'109175', u'type': u'Created Section', 'class': 'addbold'}]

我想根据字典的名称键按字母顺序排列列表项。

所以输出应该是这样的

[{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'A', 'class': 'addbold'} ,
{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'D', 'class': 'addbold'} ,
{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'G', 'class': 'addbold'} , 
{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'X', 'class': 'addbold'}]

如何对列表中的列表项进行排序?

最佳答案

sortedlist.sort接受可选的 key 函数参数。函数的返回值用于比较元素顺序。

>>> lst = [...]
>>> sorted(lst, key=lambda x: x['name'])
[{u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'A', 'class': 'addbold'},
 {u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'D', 'class': 'addbold'},
 {u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'G', 'class': 'addbold'},
 {u'status': u'Active', u'type': u'Created Section', u'orgID': u'109175', u'name': u'X', 'class': 'addbold'}]

operator.itemgetter('name')可以用来代替 lambda 函数。

import operator
sorted(lst, key=operator.itemgetter('name'))

关于python - 对列表中的字典元素进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22097058/

相关文章:

python - 打印子字符串,Python

python - 如何使用 Flask-user 扩展创建用户 'programmatically'?

c# - 比较不同结构的数据

c# - 如何创建包含 const 内容的 C# 列表?

python - 如何根据多个已排序项目列表制作一个已排序项目列表?

python - 未知错误 : session deleted because of page crash from unknown error: cannot determine loading status from tab crashed with ChromeDriver Selenium

python - 如何 1. 将 4,550 个 dbf 文件转换为 csv 文件 2. 根据名称连接文件 3. 将所有 csv 连接成一个大数据 csv 进行分析?

c# - 如何在不使用 Loop 的情况下更改 List<UIControl> 中控件的属性?

java - 最大堆找到第 k 个最小元素

algorithm - 鞍背搜索起点