【问题标题】:Sorting by two values in python. One ascending and one descending [duplicate]在python中按两个值排序。一升一降[重复]
【发布时间】:2021-10-20 21:08:03
【问题描述】:

有字典:

{'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'... 并按字符串升序排序?

【问题讨论】:

标签: python algorithm sorting


【解决方案1】:

用途:

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 将使排序在第二个元素上降序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-03
    • 1970-01-01
    • 2018-11-20
    相关资源
    最近更新 更多