Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中,有没有一种简单的方法可以先按数字排序,然后再按氨基酸字母排序_Python_Sorting_Alphanumeric - Fatal编程技术网

在python中,有没有一种简单的方法可以先按数字排序,然后再按氨基酸字母排序

在python中,有没有一种简单的方法可以先按数字排序,然后再按氨基酸字母排序,python,sorting,alphanumeric,Python,Sorting,Alphanumeric,有没有一种简单的方法可以按字母数字进行排序,但以数字递增,然后在下一个数字处重新开始字母 是,后面是国会大厦字母,不带空格,最多5位数字 python,氨基酸序列号 在Python中,我尝试过: from natsort import natsort_keygen, ns l1 = ['D1', 'E1', 'S1', 'S4', 'S6', 'C1', 'S2', 'D2', 'C2', 'E2', 'W373'] natsort_key1 = natsort_keygen(key=lambd

有没有一种简单的方法可以按字母数字进行排序,但以数字递增,然后在下一个数字处重新开始字母 是,后面是国会大厦字母,不带空格,最多5位数字 python,氨基酸序列号

在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])
)
应该可以,因为只有一个字母。

您可以使用这种排序:

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(已排序(l1),key=lambda值:值[:1],值[0])

输出:
['C1',D1',E1',S1',C2',D2',E2',S2',S4',S6',W373']
您可以使用python的函数

sorted(已排序(l1),key=lambda值:值[:1],值[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
这种排序方法将第一个字符带到字符串的末尾,对其进行排序,然后将其带回来,这样就可以了

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

再说一次,我对氨基酸了解不多,谷歌的第一个搜索结果显示只有一个字符后跟数字。我的答案基于这个假设

如果我的理解是正确的,氨基酸是由一个字母后跟一个数字来表示的,那么下面的方法就可以了

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
这种排序方法将第一个字符带到字符串的末尾,对其进行排序,然后将其带回来,这样就可以了

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

再说一次,我对氨基酸了解不多,谷歌的第一个搜索结果显示只有一个字符后跟数字。我的回答基于这样的假设

氨基酸能有两个字母吗?@Giantslovedatehmetal请不要讽刺自己,不要让自己回答自己的问题。@8质子在这种情况下,不删除他的评论并自己回答是合法的。我不知道只有一封信,原始问题中缺少信息,其他人可能也不知道,这对问题有点关键。@bgse好的观点,也许我推断他的两个评论是错误的,考虑到两个评论之间有7分钟的间隔,我想你是对的。我为一个可能的错误假设向GiantSlovedAthmetal道歉。但是——我仍然认为第一条评论是不必要的,简单地说“氨基酸不能有两个字母”就足够了。无论如何,这个评论是无关紧要的。C1、C2、E1、E2等是关于氨基酸-蛋白质结合区、末端、,还有更多。我同意你们两人的看法。氨基酸能有两个字母吗?@GiantSlovedAthmetal请不要讽刺,不要让自己回答自己的问题。@8质子在这种情况下,不删除他的评论并自己回答是合法的。我不知道只有一封信,原始问题中缺少信息,其他人可能也不知道,这对问题有点关键。@bgse好的观点,也许我推断他的两个评论是错误的,考虑到两个评论之间有7分钟的间隔,我想你是对的。我为一个可能的错误假设向GiantSlovedAthmetal道歉。但是——我仍然认为第一条评论是不必要的,简单地说“氨基酸不能有两个字母”就足够了。无论如何,这个评论是无关紧要的。C1、C2、E1、E2等是关于氨基酸-蛋白质结合区、末端等的合法名称。我同意你们两人的意见。@GiantSlovedAthmetal是的,做了更正,谢谢指出。@GiantSlovedAthmetal是的,做了更正,谢谢指出。变量名在第4行有一个拼写错误,它应该是
氨基酸
第4行的变量名有一个拼写错误,应该是
氨基酸
是的,它们(氨基酸)每个1个字母后跟多达5个数字,没有空格。这些答案很好,似乎效果很好。谢谢大家。是的,它们(氨基酸)都是1个字母,后跟多达5位数字,没有空格。这些答案很好,似乎效果很好。谢谢大家。