gpt4 book ai didi

python - 一个线性函数,用于根据 python 中的不同条件按升序、降序对列表的字符串列表进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 14:57:24 25 4
gpt4 key购买 nike

假设我有以下列表:

[[list1], [list2], ..., [listK]]

其中 list1、list2、...、listK 是 N 个字符串的列表。

 [list1] = [string11, string12, ..., string1N]
[list2] = [string21, string22, ..., string2N]
. .
. .
. .

现在,假设我想选择内部列表的某个特定子集按降序排序,其余按升序排序。例如,假设 N=5,我首先想通过按升序排列内部列表的第一、第三、第五个字符串,然后按降序排列第二个和第四个字符串来对外部列表进行排序。

如果我不关心升序/降序,并且想按升序对所有内容进行排序,那么会有一个简单的单行解决方案:

outer_list.sort(key = lambda lst: (lst[0], lst[2], lst[4], lst[1], lst[3]))

但是由于我们有一个条件:内部列表的第一、第三、第五个字符串按升序排列,然后第二个和第四个字符串按降序排列,我想知道上面的代码是否有一个简单的添加来使它是一种单线解决方案。

最佳答案

除了这里所有其他的好答案之外,您还可以编写自己的订购类:

from functools import total_ordering

@total_ordering
class MyOrdering(object):
def __init__(self, value):
self.value = value
def __eq__(self, other):
return other.value == self.value
def __lt__(self, other):
for i in [0, 2, 4]:
if self.value[i] != other.value[i]:
return self.value[i] < other.value[i]
for i in [1, 3]:
if self.value[i] != other.value[i]:
return self.value[i] > other.value[i]
return False

然后您可以使用 MyOrdering 类作为您的关键函数进行排序:

outer_list.sort(key=MyOrdering)

关于python - 一个线性函数,用于根据 python 中的不同条件按升序、降序对列表的字符串列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41435809/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com