2024-05-16 14:15:59 发布
网友
我有这样一个python字典列表
l = [{'name': 'John', 'age': 23}, {'name': 'Steve', 'age': 35}, {'name': 'Helen'}, {'name': 'George'}, {'name': 'Jessica', 'age': 23}]
我在这里试图实现的是对l的元素进行重新排序,使每个包含键age的条目都移动到列表的末尾,如下所示
l
age
最终结果:
我该怎么做?在
您可以对列表进行排序:
l.sort(key=lambda d: 'age' in d)
根据'age'键的存在,True或False;True排序在False之后。Python的sort是稳定的,其余的相对排序保持不变。在
'age'
True
False
演示:
如果也希望按年龄排序,则检索age值并为那些没有年龄但将首先排序的条目返回适当的稳定sentinel。float('-inf')将始终在任何其他数字之前排序,例如:
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'}]
您可以对列表进行排序:
根据
'age'
键的存在,True
或False
;True
排序在False
之后。Python的sort是稳定的,其余的相对排序保持不变。在演示:
^{pr2}$如果也希望按年龄排序,则检索age值并为那些没有年龄但将首先排序的条目返回适当的稳定sentinel。
float('-inf')
将始终在任何其他数字之前排序,例如:同样,没有年龄的条目将按其原始的相对顺序保留:
相关问题 更多 >
编程相关推荐