Я хочу организовать список строк с определенным условием - PullRequest
0 голосов
/ 03 октября 2019

Я хочу расположить список строк в алфавитном порядке, но с условием, что строки, начинающиеся с x, идут первыми. Например, вводом является list = ['apple', 'pear', 'xanadu', 'stop'].

Я уверен, что вам нужно добавить некоторые условия в функцию сортировки, но яне уверен, что поставить.

list2=[]
string=input("Enter a string:")
list2.append(string)
while string!="stop":
    string=input("Enter a string:")
    list2.append(string)
list2.remove("stop")
print("Your list is:",list2)
print("Sorted list:",sorted(list2))

Я хочу, чтобы вывод был list = ['xanadu', 'apple', 'pear']. Я удалил «стоп» между прочим.

1 Ответ

0 голосов
/ 03 октября 2019

Используйте функцию key, которая будет определять порядок элементов:

>>> sorted(['apple','pear','xanadu','stop'], key=lambda val: (0, val) if val.startswith('x') else (1, val))
['xanadu', 'apple', 'pear', 'stop']

Лямбда означает следующее:

lambda val:\  # determine the ordering of the element `val`
(0, val)\  # make the algorithm compare tuples!
if val.startswith('x')\
else (1, val)  # use default alphabetical ordering otherwise

Поскольку мы сейчас сравниваем кортежи (ноупорядочивая фактические значения), кортежи, чей первый элемент равен нулю, всегда будут сортироваться как больше, чем те, чей первый элемент равен 1.

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