moh*_*eem 3 python sorting dictionary list python-3.x
我有list一个dictionary
data = [{'name' : 'messi', 'place': 'barcelona'}, {'name': 'salah', 'place': 'liverpool'},
{'name': 'neymar', 'place': 'paris'}, {'name': 'suarez', 'place': 'barcelona'}]
Run Code Online (Sandbox Code Playgroud)
keys我想按多个位置升序对这个字典列表进行排序,并按降序对名称进行排序
我知道如何对具有多个字段的字典列表进行排序,均为升序
sorted(data, key=lambda x: (x['name'], x['place']))
Run Code Online (Sandbox Code Playgroud)
但我不确定如何实现一个字段的升序和另一个字段的降序(两者都是str类型)
您需要排序两次,首先按name降序排序,然后按place升序排序,依赖于 python 排序是稳定的事实,因此如果两个条目具有相同的place值,则它们的顺序将在第二次排序中保留(因此name将保持降序排序):
sorted(sorted(data, key=lambda x: x['name'], reverse=True), key=lambda x: x['place'])
Run Code Online (Sandbox Code Playgroud)
输出
[
{'name': 'suarez', 'place': 'barcelona'},
{'name': 'messi', 'place': 'barcelona'},
{'name': 'salah', 'place': 'liverpool'},
{'name': 'neymar', 'place': 'paris'}
]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
671 次 |
| 最近记录: |