Вы можете разделить его, а затем отсортировать по дополнительному разделению:
splitlist = mylist.split('\n') # Split at new line
splitlist.sort(key=lambda line:float(line.split()[-1])) # Inline sort
Теперь splitlist
будет отсортировано по последнему (второму) столбцу.
Чтобы разбить его,mylist.sort()
- это сортировка inline (она меняет порядок списка без создания нового).Тогда вы можете указать key
.key
должен быть вызываемым, который требует key(item)
.Поэтому я сделал функцию lambda
, чтобы (1) разбить строку [line.split()
], (2) взять последний элемент разбиения [-1]
и затем (3) преобразовать его в float()
, чтобы его можно было сравнить
Надеюсь, это поможет
Дополнительный совет
(чтобы попытаться ответить на комментарий)
Вы также можете сделать словарь:
splitlines = [line.split() for line in splitlist]
atoms = {name:float(weight) for name,weight in splitlines}
Затем вы можете запросить его по atom['Na']
, например