【发布时间】:2015-03-05 23:32:26
【问题描述】:
假设我有以下 python 列表(这只是示例):
my_list = [{'user': 'Joe', 'score': 14},
{'user': 'Foo', 'score': 12},
{'user': 'May', 'score': 12},
{'user': 'Kat', 'score': 12},
{'user': 'Doe', 'score': 13}]
我需要按分数升序和用户名降序对该列表进行排序。 预期排序结果:
my_list = [{'user': 'May', 'score': 12},
{'user': 'Kat', 'score': 12},
{'user': 'Foo', 'score': 12},
{'user': 'Doe', 'score': 13},
{'user': 'Joe', 'score': 14}]
所以,如果我希望所有内容都按升序排列,我可以这样做:
my_list.sort(key=lambda x: (x['score'], x['user']))
对于整数很容易解决这个问题,只需在它前面添加-:
my_list.sort(key=lambda x: (-x['score'], x['user']))
不幸的是,字符串不能为负:-|
我需要一个不涉及“reverse=True”的通用解决方案。 Lambda 函数是根据用户配置动态生成的。
想法?
【问题讨论】:
标签: python list sorting python-3.x