gpt4 book ai didi

python - 如何在 python 中按顺序 AaB 而不是 ABa 对字符串进行排序

转载 作者:行者123 更新时间:2023-11-28 20:31:42 24 4
gpt4 key购买 nike

我正在尝试对字符串进行排序(为 punnetsquare 制作基因型)。我当前的实现是:

unsorted_genotype = 'ABaB'
sorted_genotype = sorted(list(unsorted_genotype))
sorted_string = ''.join(sorted_genotype)

输出

'ABBa'

不过,我希望并期望:

'AaBB'

我该如何更改或解决这个问题?

最佳答案

您可以指定 sorting key并使用元组排序:

[(1,1),(1,2)]:元组按第一个元素排序,相等时​​按第二个到第 n 个元素排序:

unsorted = 'ABaB'
s = sorted(unsorted, key= lambda x:(x.lower(),x))
print(''.join(s)) # 'AaBB'

这确保它首先按“低”字符排序 - 将 aA 分组在一起,然后按实际字符排序,因此它们也发生排序:ABaaAAaAaAAAB => AAAAAAAaaaaBB

阅读 Material :

一个简单的 key = str.lower 如所指控的骗局所建议的那样,不会将 A 分组到 Aaa 这对于 Prunnet squares 会很好


如果您想让它们按出现顺序排列,然后将小写字母和大写字母组合在一起,您可以使用:

unsorted = 'ABaaAAaAaAAAB'
s = sorted(unsorted, key=str.lower) # not by tuple, just by lower
print(''.join(s))

保持元素“有序”的结果:

AaaAAaAaAAABB   # instead of  AAAAAAAaaaaBB

并在 case-insensitive list sorting, without lowercasing the result? 中进行了描述

关于python - 如何在 python 中按顺序 AaB 而不是 ABa 对字符串进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841562/

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