首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按python中的两个值进行排序。一升一降

按python中的两个值进行排序。一升一降
EN

Stack Overflow用户
提问于 2021-10-20 21:08:03
回答 1查看 281关注 0票数 1

有字典的:

代码语言:javascript
复制
{'david': ['APP', 2], 'ala': ['PROD', 2], 'steven': ['DEV', 4], 'katya': ['SYS', 2]}

我想通过排序列表的第二个元素(降序),然后按照列表的第一个元素(升序)排序。我想要的输出是:

代码语言:javascript
复制
>>> [('steven', ['DEV', 4]), ('david': ['APP', 2]), ('ala': ['PROD', 2]), ('katya': ['SYS', 2])]

我最好的主意是:

代码语言:javascript
复制
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‘这样的字符串.然后把它们按字符串排序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-20 21:14:49

使用:

代码语言:javascript
复制
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)

输出

代码语言:javascript
复制
[('steven', ['DEV', 4]), ('david', ['APP', 2]), ('ala', ['PROD', 2]), ('katya', ['SYS', 2])]

乘以-1将使排序降到第二个元素上。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69653051

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档