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

0 投票
4 回答
528 浏览
提问于 2025-04-17 08:06

我创建了一个叫 mylist 的列表,内容是:

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

我该怎么做才能让它根据第二列的完整数字进行排序,这样顺序就会是:

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

4 个回答

1

你只需要添加浮点数转换:

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

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。这些问题可能会让我们感到困惑,尤其是当我们刚开始学习编程的时候。比如,有人可能会在使用特定的代码时,发现它没有按照预期的方式工作。这种情况很常见,尤其是在我们还不太熟悉这些工具的情况下。

解决这些问题的第一步是仔细阅读错误信息。错误信息通常会告诉我们哪里出了问题,虽然有时候它们可能看起来很复杂,但其实里面有很多有用的信息。我们可以根据这些信息去查找解决方案,或者在网上搜索相关的讨论。

另外,查看官方文档也是一个很好的方法。文档通常会详细解释如何使用某个工具或库,里面有很多示例和说明,可以帮助我们更好地理解。

如果自己解决不了问题,可以考虑向社区求助。比如在StackOverflow上提问,描述清楚自己遇到的问题,提供相关的代码和错误信息,通常会有人愿意帮助你。

总之,遇到问题时不要着急,慢慢分析,寻找解决方案,逐步提高自己的编程能力。

>>> 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')]
4

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

撰写回答