有没有一种简单的方法可以按字母数字排序,但以数字增量,然后在下一个数字处再次开始字母是的,后面跟着国会大厦的字母,没有空格,最多 5 位数字蟒蛇,氨基酸序列号?
在Python中,我尝试过:
from natsort import natsort_keygen, ns
l1 = ['D1', 'E1', 'S1', 'S4', 'S6', 'C1', 'S2', 'D2', 'C2', 'E2', 'W373']
natsort_key1 = natsort_keygen(key=lambda y: y.lower())
l1.sort(key=natsort_key1)
l1
# Gives:
['C1', 'C2', 'D1', 'D2', 'E1', 'E2', 'S1', 'S2', 'S4', 'S6', 'W373']
但是我喜欢它:
['C1', 'D1', 'E1', 'S1', 'C2','D2', 'E2', 'S2', 'S4', 'S6', 'W373']
您可以使用以下排序:
amino_acids = ['D1', 'E1', 'S1', 'S4', 'S6', 'C1', 'S2', 'D2', 'C2', 'E2', 'W373']
sorted_acids = sorted(
amino_acids,
key=lambda acid: (int(acid[1:]), acid[0])
)
应该没问题,因为氨基酸只有一个字母。
你可以使用python的sorted()
函数
sorted(sorted(l1), key = lambda value:value[:1], value[0])
输出: ['C1', 'D1', 'E1', 'S1', 'C2', 'D2', 'E2', 'S2', 'S4', 'S6', 'W373']
如果我的理解是正确的,氨基酸由一个字母表和一个数字表示,那么以下内容应该可以解决问题。
from natsort import natsort_keygen, ns
l1 = ['D1', 'E1', 'S1', 'S4', 'S6', 'C1', 'S2', 'D2', 'C2', 'E2', 'W373']
for k, v in enumerate(l1):
l1[k] = v[1:] + v[0]
natsort_key1 = natsort_keygen(key=lambda y: y.lower())
l1.sort(key=natsort_key1)
for k, v in enumerate(l1):
l1[k] = v[-1] + v[:-1]
l1
这会对第一个字符进行排序,将第一个字符带到字符串的末尾,对其进行排序,然后将其带回,应该可以解决问题。
同样,我对氨基酸了解不多,第一个谷歌搜索结果表明只有一个字符后跟数字。我的回答是基于这个假设