gpt4 book ai didi

python - 对同时包含字符串和整数的列表进行排序 (Python)

转载 作者:行者123 更新时间:2023-12-05 09:29:51 25 4
gpt4 key购买 nike

我想对包含(字符串、整数、整数)的元组列表进行排序。这些元组的第一个值可以是任何字符串(例如“$”或数字字符串,例如“9”)。目标是根据这些元组的第一个元素进行排序,如果比较发生在两个相同的字符串之间,我将根据第二个元素进行排序。我尝试了以下方法,但结果不成功。解决方案?

array = [('$', 0, 0), ('3', 3, 3), ('7', 5, 6), ('15', 6, 9), ('5', 7, 11), ('17', 8, 13), ('18', 9, 16), ('19', 10, 18), ('16', 11, 20)]
sorted_array = sorted(array, key=lambda x:(x[0], int(x[1])))
print(sorted_array)

输出:

[('$', 0, 0), ('3', 3, 3), ('7', 5, 6), ('15', 6, 9), ('5', 7, 11), ('17', 8, 13), ('18', 9, 16), ('19', 10, 18), ('16', 11, 20)]

我想得到:

[('$', 0, 0), ('3', 3, 3), ('5', 7, 11), ('7', 5, 6), ('15', 6, 9), ('16', 11, 20), ('17', 8, 13), ('18', 9, 16), ('19', 10, 18)]

最佳答案

使用 natsort(自然排序)和 str.isdigit,您可以自然地对数字进行排序,同时保持非数字优先。但您可能期望的更一般的规则尚不清楚。

from natsort import natsorted 

array = [('$', 0, 0), ('3', 3, 3), ('7', 5, 6), ('15', 6, 9), ('5', 7, 11), ('17', 8, 13), ('18', 9, 16), ('19', 10, 18), ('16', 11, 20)]
sorted_array = natsorted(array, key=lambda x:(x[0].isdigit(), x))
print(sorted_array)

输出:

[('$', 0, 0), ('3', 3, 3), ('5', 7, 11), ('7', 5, 6), ('15', 6, 9), ('16', 11, 20), ('17', 8, 13), ('18', 9, 16), ('19', 10, 18)]

关于python - 对同时包含字符串和整数的列表进行排序 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70237647/

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