Как сделать список в списке из текстового файла? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть текстовый файл в алфавитном порядке, похожий на этот в Python:

В 210.001 \ n Au 196,9665 \ n B 10,81 \ n Ba 137,34 \ n

Я бы хотел отсортировать его по номерам, а не по буквам. Я думал, что я мог бы сделать список каждой строки в списке, и оттуда сортировать по индексу один? Это также означает, что пробел между буквами и цифрами должен быть ",".

1 Ответ

0 голосов
/ 20 марта 2019

Вы можете разделить его, а затем отсортировать по дополнительному разделению:

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'], например

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...