python - 用数字对列表进行排序

标签 python python-2.7 sorting

如果我有一个包含所有字符串但包含数字的列表:

a = ['0.01um', 'Control', '0.1um', '0.05um']

如果我对列表进行排序,它看起来像这样

a.sort()
print(a)
['0.01um', '0.05um', '0.1um', 'Control']

我怎样才能让它排序,以便以字母开头的字符串出现在以数字开头的字符串之前,但数字仍然从小到大排序。例如:

['Control', '0.01um', '0.05um', '0.1um']

最佳答案

好吧,要让以字母开头的字符串在以数字开头的字符串之前进行整理,听起来您需要将它们分开,对每个字符串进行排序,然后将一个(子)列表附加到另一个列表。

为了对包含数字的字符串进行“自然”排序,我会查看 natsort .

所以代码可能看起来像这样:

#!python
# UNTESTED
import string
from natsort import natsorted
a = ['0.01um', 'Control', '0.1um', '0.05um']
astrs = [x for x in a if not x[0] in string.digits]
anums = [x for x in a if x[0] in string.digits]
results = natsorted(astrs) + natsorted(anums)

关于python - 用数字对列表进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572941/

相关文章:

mysql - 如何对列 "product_in_stock"的子项数组进行排序。虚拟市场 3

python-2.7 - 在 python 中使用合并排序排列给定的整数列表以获得最少的数字

python - 如何从具有指示重叠的重复值的数据中计算现象的共现

python - Google AppEngine 应用程序版本

python - 无法在 web.py 中创建 ssl session - Python 2.7

python - 计算字典中键值对的数量

python - 仅使用batch_size和仅使用steps_per_epoch的Keras model.fit之间的区别

python - 在 Pandas 中访问 float 索引时,神奇的行是怎么回事?

python-2.7 - Selenium XPATH 我如何从表第 4 列中的文本在表第 2 列中获取文本

ruby - 按键排序散列是一个字符串