如何在Python中根据列表的内容对列表重新排序
我有一个python字典列表,如下所示如何在Python中根据列表的内容对列表重新排序,python,python-2.7,list,Python,Python 2.7,List,我有一个python字典列表,如下所示 l = [{'name': 'John', 'age': 23}, {'name': 'Steve', 'age': 35}, {'name': 'Helen'}, {'name': 'George'}, {'name': 'Jessica', 'age': 23}] 我在这里试图实现的是对l的元素重新排序,这样包含键age的每个条目都会像这样移动到列表的末尾 最终结果: l = [{'name': 'Helen'
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}]
如何进行此操作?您可以对列表进行排序:
l.sort(key=lambda d: 'age' in d)
根据'age'
键的存在,键返回True
或False
True
在False
之后排序。Python的排序是稳定的,其余的相对排序保持不变
演示:
如果还希望按年龄排序,则检索年龄值并为那些没有年龄但将首先排序的条目返回合适的稳定哨兵<代码>浮点('-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'}]
您可以对列表进行排序:
l.sort(key=lambda d: 'age' in d)
根据'age'
键的存在,键返回True
或False
True
在False
之后排序。Python的排序是稳定的,其余的相对排序保持不变
演示:
如果还希望按年龄排序,则检索年龄值并为那些没有年龄但将首先排序的条目返回合适的稳定哨兵<代码>浮点('-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'}]
您可以对列表进行排序:
l.sort(key=lambda d: 'age' in d)
根据'age'
键的存在,键返回True
或False
True
在False
之后排序。Python的排序是稳定的,其余的相对排序保持不变
演示:
如果还希望按年龄排序,则检索年龄值并为那些没有年龄但将首先排序的条目返回合适的稳定哨兵<代码>浮点('-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'}]
您可以对列表进行排序:
l.sort(key=lambda d: 'age' in d)
根据'age'
键的存在,键返回True
或False
True
在False
之后排序。Python的排序是稳定的,其余的相对排序保持不变
演示:
如果还希望按年龄排序,则检索年龄值并为那些没有年龄但将首先排序的条目返回合适的稳定哨兵<代码>浮点('-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'}]
如果dict有一个年龄,您还希望它按年龄排序吗?您的样本输出也按年龄排序。这是故意的吗?@MartijnPieters不,不是。这里完全是随机的。我目前对订购不感兴趣,因此您下面的答案就足够了。谢谢。@Konos5:那你可能需要调整一下顺序,并把它说清楚。在任何情况下,你都可以从我这里得到这两个选项。如果dict有一个年龄,你也希望它按年龄排序吗?你的样本输出也按年龄排序。这是故意的吗?@MartijnPieters不,不是。这里完全是随机的。我目前对订购不感兴趣,因此您下面的答案就足够了。谢谢。@Konos5:那你可能需要调整一下顺序,并把它说清楚。在任何情况下,你都可以从我这里得到这两个选项。如果dict有一个年龄,你也希望它按年龄排序吗?你的样本输出也按年龄排序。这是故意的吗?@MartijnPieters不,不是。这里完全是随机的。我目前对订购不感兴趣,因此您下面的答案就足够了。谢谢。@Konos5:那你可能需要调整一下顺序,并把它说清楚。在任何情况下,你都可以从我这里得到这两个选项。如果dict有一个年龄,你也希望它按年龄排序吗?你的样本输出也按年龄排序。这是故意的吗?@MartijnPieters不,不是。这里完全是随机的。我目前对订购不感兴趣,因此您下面的答案就足够了。谢谢。@Konos5:那你可能需要调整一下顺序,并把它说清楚。在任何情况下,您都可以从我这里得到这两个选项。建议使用
l.sort(key=lambda d:d.get('age',-1))
,因为它也会按ages@stalk:我还不确定这是否是我的意图,但我会扩展。建议使用l.sort(key=lambda d:d.get('age',-1))
,因为它也将按ages@stalk:我还不确定这是否是我的意图,但我会扩展。建议使用l.sort(key=lambda d:d.get('age',-1))
,因为它也会按ages@stalk:我还不确定这是否是我的意图,但我会扩展。建议使用l.sort(key=lambda d:d.get('age',-1))
,因为它也将按ages@stalk当前位置我还不确定这是否是我的意图,但我会详细说明。