Есть ли в python какой-либо ярлык для создания списка кортежей в заданном порядке?

#python #list #sorting #tuples

Вопрос:

В настоящее время я работаю над составлением списка кортежей для матричного вопроса, и я даю список кортежей , подобный этому [(hello,3),(morning,2),(good,5),(!,1)] , и то, что мне нужно сделать для шага, — это отсортировать его по списку, подобному [(hello,3),(good,5),(morning,2),(!,1)] . Я знаю, как это сделать, создав новый список и выполнив итерацию, но мне интересно, есть ли более простые вещи, которые мы можем сделать с помощью python. Как будто я могу отсортировать это с помощью списка [hello, good, morning,!] . Спасибо вам за помощь.

Правило состоит в том, чтобы просто отсортировать список по заданному упорядоченному списку.

Комментарии:

1. В чем тут логика?

2. Составьте настоящие списки python. На самом деле, если вы сделаете его рабочим сценарием с присвоением переменной и сравнением с желаемым результатом, мы сможем легко протестировать его. Кроме того, сортируя, вы просто сортируете, разве list(sort(your_list)) этого недостаточно?

3. Каковы правила определения порядка? Вы можете использовать либо my_list.sort() или sorted() , если знаете, как определить правила.

Ответ №1:

Я говорю, что лучший способ-это создать словарь.

Входные данные:

 lst = ['hello', 'good', 'morning', '!']
lot = [('hello', 3), ('morning', 2), ('good', 5), ('!', 1)]
 

Код:

 dct = dict(lot)
print([(i, dct[i]) for i in lst])
 

Выход:

 [('hello', 3), ('good', 5), ('morning', 2), ('!', 1)]
 

Это делает слова ключевыми и числовыми значениями словаря, а значения получаются в порядке lst .

Это гораздо эффективнее, чем другие ответы, так sorted как это довольно массивная функция.