有字典的:
{'david': ['APP', 2], 'ala': ['PROD', 2], 'steven': ['DEV', 4], 'katya': ['SYS', 2]}我想通过排序列表的第二个元素(降序),然后按照列表的第一个元素(升序)排序。我想要的输出是:
>>> [('steven', ['DEV', 4]), ('david': ['APP', 2]), ('ala': ['PROD', 2]), ('katya': ['SYS', 2])]我最好的主意是:
x = sorted(x.items(), key=lambda elem: elem[1][1], reverse=True)
x.sort(key=lambda elem: elem[1][0])
>>> [('david', ['APP', 2]), ('steven', ['DEV', 4]), ('ala', ['PROD', 2]), ('katya', ['SYS', 2])]是否有来自核心python的函数或方法会考虑对同一个对象进行排序,并对值进行排序,在我的例子中,如果数字(数字正在降序排序)相等,那么查看像'APP‘、’DEV‘这样的字符串.然后把它们按字符串排序?
发布于 2021-10-20 21:14:49
使用:
data = {'david': ['APP', 2], 'ala': ['PROD', 2], 'steven': ['DEV', 4], 'katya': ['SYS', 2]}
res = sorted(data.items(), key=lambda x: (x[1][1] * -1, x[1][0]))
print(res)输出
[('steven', ['DEV', 4]), ('david', ['APP', 2]), ('ala', ['PROD', 2]), ('katya', ['SYS', 2])]乘以-1将使排序降到第二个元素上。
https://stackoverflow.com/questions/69653051
复制相似问题