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_Exponent - Fatal编程技术网

在python中对包含指数的列进行排序

在python中对包含指数的列进行排序,python,sorting,exponent,Python,Sorting,Exponent,我创建了我的列表,其中显示: [('GCK', '3e-12'), ('ist', '6e-30'), ('iso', '5e-15'), ('tig', '5e-77')] 运行排序功能时: mylist.sort(key=operator.itemgetter(1)) 它在第二列对列表进行排序,但仅按第一个整数排序 [('GCKDGN101ANI4S', '3e-12'), ('isotig13037', '5e-15'), ('isotig14607', '5e-77'), ('iso

我创建了我的列表,其中显示:

[('GCK', '3e-12'), ('ist', '6e-30'), ('iso', '5e-15'), ('tig', '5e-77')]
运行排序功能时:

mylist.sort(key=operator.itemgetter(1))
它在第二列对列表进行排序,但仅按第一个整数排序

[('GCKDGN101ANI4S', '3e-12'), ('isotig13037', '5e-15'), ('isotig14607', '5e-77'), ('isotig03156', '6e-30')]
如何使其按第2列中的整数排序,以便顺序为:

[('GCK', '3e-12'), ('ist', '5e-15'), ('tig', '6e-30'), ('iso', '5e-77')]
“3e-12”不是数字,而是字符串。字符串按每个字母排序

您需要对数字进行排序,因此必须首先转换它们。在原始数据中:

old = [('GCK', '3e-12'), ('ist', '6e-30'), ('iso', '5e-15'), ('tig', '5e-77')]
new = [(name, float(x)) for name,x in old]
new.sort(key=operator.itemgetter(1))
或在排序期间转换项目:

old.sort(key=lambda elem: float(elem[1]))

您只需添加浮点转换:

>>> mylist.sort(key=lambda x:float(x[1]), reverse=True)
>>> mylist
[('GCK', '3e-12'), ('iso', '5e-15'), ('ist', '6e-30'), ('tig', '5e-77')]

可以先将字符串转换为数字

import operator

a = [('GCKDGN101ANI4S', '3e-12'), ('isotig13037', '5e-15'), ('isotig14607', '5e-77'), ('isotig03156', '6e-30')]
converted_a = [ (row[0],float(row[1])) for row in a ]
converted_a.sort(key=operator.itemgetter(1), reverse=True)

print converted_a

谢谢你的解释!
import operator

a = [('GCKDGN101ANI4S', '3e-12'), ('isotig13037', '5e-15'), ('isotig14607', '5e-77'), ('isotig03156', '6e-30')]
converted_a = [ (row[0],float(row[1])) for row in a ]
converted_a.sort(key=operator.itemgetter(1), reverse=True)

print converted_a