Порядок списка элементов после первого пробела, а затем те же слова - PullRequest
0 голосов
/ 19 марта 2020

У меня есть следующий пример списка в python:

test_list = ['ViewData.Accounting Base Net Amount',
'ViewData.Accounting Cancel Amount',
 'ViewData.Accounting Cancel Flag',
 'ViewData.Accounting OTE Custodian Account',
 'ViewData.Accounting OTE Ticker',
 'ViewData.Accounting OTEIncludeFlag',
 'ViewData.Accounting Principal Amount',
 'ViewData.Accounting Trade Date',
 'ViewData.Accounting Trade Expenses',
 'ViewData.B-P Base Net Amount',
 'ViewData.B-P Cancel Amount',
 'ViewData.B-P Cancel Flag',
 'ViewData.B-P OTE Custodian Account',
 'ViewData.B-P OTE Ticker',
 'ViewData.B-P OTEIncludeFlag',
 'ViewData.B-P Principal Amount',
 'ViewData.B-P Trade Date',
 'ViewData.B-P Trade Expenses']

Я пытаюсь упорядочить этот список так, чтобы список выглядел следующим образом

    test_list = ['ViewData.Accounting Base Net Amount',
    'ViewData.B-P Base Net Amount',
    'ViewData.Accounting Cancel Amount',
    'ViewData.B-P Cancel Amount',
     'ViewData.Accounting Cancel Flag',
     'ViewData.B-P Cancel Flag',
     'ViewData.Accounting OTE Custodian Account',
     'ViewData.B-P OTE Custodian Account',
     'ViewData.Accounting OTE Ticker',
     'ViewData.B-P OTE Ticker',
     'ViewData.Accounting OTEIncludeFlag',
     'ViewData.B-P OTEIncludeFlag',
     'ViewData.Accounting Principal Amount',
     'ViewData.B-P Principal Amount',
     'ViewData.Accounting Trade Date',
     'ViewData.B-P Trade Date',
     'ViewData.Accounting Trade Expenses',
     'ViewData.B-P Trade Expenses']

Что я сделал до сих пор разделяет элементы списка после первого пробела и затем упорядочивает их следующим образом:

sorted(test_list, key=lambda x: x.split()[1])

Вывод для этого выглядит следующим образом:

['ViewData.Accounting Base Net Amount',
 'ViewData.B-P Base Net Amount',
 'ViewData.Accounting Cancel Amount',
 'ViewData.Accounting Cancel Flag',
 'ViewData.B-P Cancel Amount',
 'ViewData.B-P Cancel Flag',
 'ViewData.Accounting OTE Custodian Account',
 'ViewData.Accounting OTE Ticker',
 'ViewData.B-P OTE Custodian Account',
 'ViewData.B-P OTE Ticker',
 'ViewData.Accounting OTEIncludeFlag',
 'ViewData.B-P OTEIncludeFlag',
 'ViewData.Accounting Principal Amount',
 'ViewData.B-P Principal Amount',
 'ViewData.Accounting Trade Date',
 'ViewData.Accounting Trade Expenses',
 'ViewData.B-P Trade Date',
 'ViewData.B-P Trade Expenses']

Но это не дает Мне нужно, чтобы выходные данные вызывали элементы, следующие после того, как второй пробел сгруппирован, а это не то, что я хочу. Есть ли способ упорядочить похожие словосочетания после первого пробела вместе

1 Ответ

2 голосов
/ 19 марта 2020

Второй аргумент для split - это количество раз, которое нужно разделить строку, если вы передадите 1, то она разделит строку на 2 (если разделитель отсутствует)

>>> 'ViewData.Accounting Base Net Amount'.split(' ', 1)
['ViewData.Accounting', 'Base Net Amount']

Вы хотите упорядочить по оставшейся части строки после первого пробела, вы можете упорядочить по 2-му элементу разделения вызова, используя это

sorted(test_list, key=lambda x: x.split(' ', 1)[1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...