2016-03-09 5 views
1

Мне нужно отсортировать набор наборов символов так, чтобы они находились в том же порядке, что и строка. Так возьмите этот входСортировка наборов на основе порядка строки?

"ADFE" [(FE, 3), (A, 5), (D, 6)] 

Выход будет:

"A D FE" [(A, 5), (D, 6), (FE, 3)] 
+0

Зачем вам это нужно? – erip

+0

Какой код вы написали? – barny

+0

Кроме того, я редактировал вопрос, но он был основан на том, как _I_ понял вопрос ... не стесняйтесь предлагать редактирование, если это не то, что вы хотели ... – erip

ответ

2

Если я правильно понимаю, у вас есть строка, такие как 'ADFE' и у вас есть список таких как [('FE', 3), ('A', 5), ('D', 6)]. Затем вы хотите отсортировать этот список на основе строки. Для этого вы можете использовать sorted() с ключом:

letters = 'ADFE' 
old = [('FE', 3), ('A', 5), ('D', 6)] 
new = sorted(old, key=lambda x: letters.index(x[0])) 
0

Вы можете сделать

order = 'A D FE'.split(' ') 
unordered_list = [['FE', 3], ['A', 5], ['D', 6]] 
ordered_list = sorted(unordered_list, key=lambda x: order.index(x[0])) 
+0

Как я понимаю, входная строка - «ADFE», а не «A D FE». Но вы можете сделать то же самое, используя 'index' в самой строке. Также нужно сделать 'order.index (x [0])' –

+0

@AmiTavory Ну, вопрос, насколько я вижу, касается сортировки списков, а не о слиянии строк, но ok –

+0

@ Mr.E Поскольку вы видите это по-другому (и это, возможно, субъективно), я удалил downvote. –

Смежные вопросы