我有按字母顺序排列的文本文件,在Python中看起来像这样:
在210.001 \ n 金196.9665 \ n B 10.81 \ n 137.34 \ n
我希望按数字而不是字母进行排序。我当时在想我可以对列表中的每一行做一个列表,然后从那里按索引排序?这也意味着字母和数字之间的空格必须为“,”。
答案 0 :(得分:0)
您可以拆分它,然后按其他拆分进行排序:
splitlist = mylist.split('\n') # Split at new line
splitlist.sort(key=lambda line:float(line.split()[-1])) # Inline sort
现在splitlist
将按最后(第二)列排序。
要对其进行细分,mylist.sort()
是一种内联排序(它会更改列表的顺序而不创建新列表)。然后,您可以指定一个key
。 key
必须是采用key(item)
的可调用对象。因此,我做了一个lambda
函数,以(1)分割行[line.split()
],(2)提取分割后的[-1]
的最后一项,然后(3)将其转换为{{ 1}},以便可以比较
我希望这对您有帮助
(尝试发表评论)
您还可以制作字典:
float()
然后您可以通过splitlines = [line.split() for line in splitlist]
atoms = {name:float(weight) for name,weight in splitlines}
进行查询