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

2024-09-27 00:21:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经创建了mylist,其内容如下:

[('GCK', '3e-12'), ('ist', '6e-30'), ('iso', '5e-15'), ('tig', '5e-77')]

运行排序函数时:

^{pr2}$

它对第2列的列表进行排序,但仅按第一个整数排序

[('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')]

Tags: 函数内容列表排序iso整数tigmylist
3条回答

只需添加浮点转换:

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

或在排序过程中转换项目:

^{pr2}$
>>> l = [('GCK', '3e-12'), ('ist', '6e-30'), ('iso', '5e-15'), ('tig', '5e-77')]
>>> sorted(l, key=lambda x: float(x[1]), reverse=True)
[('GCK', '3e-12'), ('iso', '5e-15'), ('ist', '6e-30'), ('tig', '5e-77')]

相关问题 更多 >

    热门问题