如何根据内容在Python中对列表进行重新排序

自由

我有一个这样的python字典列表;

l = [{'name': 'John', 'age': 23},
     {'name': 'Steve', 'age': 35},
     {'name': 'Helen'},
     {'name': 'George'},
     {'name': 'Jessica', 'age': 23}]

我要在这里实现的目的是以l这种方式对元素进行重新排序,使每个包含键的条目都age像这样移动到列表的末尾。

最终结果:

l = [{'name': 'Helen'},
     {'name': 'George'},
     {'name': 'Jessica', 'age': 23},
     {'name': 'John', 'age': 23},
     {'name': 'Steve', 'age': 35}]

我怎样才能做到这一点?

马丁·彼得斯(Martijn Pieters)

您可以对列表进行排序:

l.sort(key=lambda d: 'age' in d)

密钥根据密钥的存在返回True排序后Python的排序是稳定的,其余的相对顺序保持不变。False'age'TrueFalse

演示:

>>> from pprint import pprint
>>> l = [{'name': 'John', 'age': 23},
...      {'name': 'Steve', 'age': 35},
...      {'name': 'Helen'},
...      {'name': 'George'},
...      {'name': 'Jessica', 'age': 23}]
>>> l.sort(key=lambda d: 'age' in d)
>>> pprint(l)
[{'name': 'Helen'},
 {'name': 'George'},
 {'age': 23, 'name': 'John'},
 {'age': 35, 'name': 'Steve'},
 {'age': 23, 'name': 'Jessica'}]

如果您想按年龄排序,然后检索年龄值,并返回一个合适稳定的前哨对于没有年龄的条目,但将首先排序。float('-inf')将始终排在其他任何数字之前,例如:

l.sort(key=lambda d: d.get('age', float('-inf')))

同样,没有年龄的条目按其原始相对顺序排列:

>>> l.sort(key=lambda d: d.get('age', float('-inf')))
>>> pprint(l)
[{'name': 'Helen'},
 {'name': 'George'},
 {'age': 23, 'name': 'John'},
 {'age': 23, 'name': 'Jessica'},
 {'age': 35, 'name': 'Steve'}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何根据 Python 中的日期时间对字典列表进行排序

根据长度对python列表进行排序,然后根据内容进行排序

如何使用Python中的插入排序根据学生的成绩对学生列表进行排序

如何根据另一个活动的可排序列表对列表进行重新排序?

根据特定列对Python中的列表列表进行排序

根据列表 Python 中的特定部分对列表进行排序

如何根据文件的内容对目录中的文件进行排序?

根据内容中的值重新排序 FlatList

如何在Python中根据值的首字母对列表值进行排序

如何根据条件对具有不同索引的python中的列表进行排序?

如何根据不同级别的一组键对Python中的列表进行排序

如何检查列表(或数组)上的条件,然后在Python中根据该条件对元素进行排序

Python:如何根据特定字符的数量对列表进行排序

如何根据Scala中的对象字段对列表对象进行排序?

如何根据元组列表中的值对元组进行排序

如何根据面值对 dart 中的整数列表进行排序?

根据字典中的“依赖项”对python列表进行排序

根据python中单词的元音数量对列表进行排序

根据发生次数对python中的列表进行计数/排序

根据Python中的创建日期对文件列表进行排序

在Python中,给定字典中包含值列表的字典,如何根据该列表中的项目数量对字典进行排序?

如何对下拉列表进行重新排序(jquery)

如果我在 python 中有 2 个变量的列表,如何根据列表中的出现对它们进行排序

根据另一个排序列表在python中对列表进行排序

Python在排序后对列表列表进行重新排序

如何根据所需邻域的程度对单元进行重新排序?(进行中)

如何根据时间对字典列表进行排序

如何根据ID对列表视图进行排序

JAVA:如何根据字段对列表进行排序