2024-05-20 13:42:43 发布
网友
我正在尝试对字符串进行排序(为punnetsquare生成一个基因型)。 我目前的实施是:
unsorted_genotype = 'ABaB' sorted_genotype = sorted(list(unsorted_genotype)) sorted_string = ''.join(sorted_genotype)
It输出
'ABBa'
不过,我希望:
'AaBB'
我该如何更改或修复此问题?你知道吗
您可以向排序函数传递一个键:
unsorted_genotype = 'ABaB' sorted_genotype = sorted(unsorted_genotype, key=lambda x: x.lower()) ''.join(sorted_genotype) 'AaBB'
可以指定sorting key并使用元组排序:
[(1,1),(1,2)]:元组按第1个元素排序,相等时按第2到第n个元素排序:
[(1,1),(1,2)]
unsorted = 'ABaB' s = sorted(unsorted, key= lambda x:(x.lower(),x)) print(''.join(s)) # 'AaBB'
这确保了它首先按“较低”字符排序—将a和A组合在一起,然后按实际字符排序,这样它们也会被排序:ABaaAAaAaAAAB => AAAAAAAaaaaBB
a
A
ABaaAAaAaAAAB => AAAAAAAaaaaBB
阅读:
一个简单的key = str.lower正如在被指控的被骗者中所建议的那样,并不把A归为A和a归为a,这对Prunnet squares来说是很好的
key = str.lower
如果让它们按出现顺序排列,然后将小写和大写组合在一起,则可以使用:
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?中描述
您可以向排序函数传递一个键:
可以指定sorting key并使用元组排序:
[(1,1),(1,2)]
:元组按第1个元素排序,相等时按第2到第n个元素排序:这确保了它首先按“较低”字符排序—将
a
和A
组合在一起,然后按实际字符排序,这样它们也会被排序:ABaaAAaAaAAAB => AAAAAAAaaaaBB
阅读:
一个简单的
key = str.lower
正如在被指控的被骗者中所建议的那样,并不把A
归为A
和a
归为a
,这对Prunnet squares来说是很好的如果让它们按出现顺序排列,然后将小写和大写组合在一起,则可以使用:
使元素保持“有序”:
并在case-insensitive list sorting, without lowercasing the result?中描述
相关问题 更多 >
编程相关推荐