2010-04-01 5 views
1

у меня есть 3 списка, каждый с одинаковыми элементами: адреса электронной почты, зарплаты и идентификаторыКак отсортировать список в алфавитном порядке и имеют дополнительные списки, отсортированные в том же порядке

которые я хотел бы, чтобы отсортировать адреса электронной почты в алфавитном порядке и в некотором роде сортировать остальные 2 списка (зарплаты и идентификаторы).

E.g., 
Emails: 
[email protected] 
[email protected] 

Salaries: 
50000 
60000 

IDs: 
2 
1 

Головоломка: Я хотел бы, чтобы отсортировать сообщения электронной почты, такие, что [email protected] является первым и [email protected] является последним и Зарплата 60000 затем 50000 и идентификаторы 1, то 2.

Дополнительная информация:
1. Длина списков одинакова и может быть длиннее двух элементов.
2. Затем я передам идентификаторы в функции для получения дополнительных списков. Эти списки не нуждаются в сортировке, так как они будут принимать порядок списка идентификаторов.

+1

Ваша настоящая проблема заключается в следующем. Вы должны использовать структуру данных (кортеж, названный кортеж, объект), который более тесно связывает зарплаты и идентификаторы адресов электронной почты. –

ответ

0

Если предположить, что каждый электронный идентификатор уникален, то это будет работать:

sortedEmails = emails[:] 
sortedEmails.sort() 

sortedSalaries = [] 
for email in sortedEmails: 
    i = emails.index(email) 
    sortedSalaries.append(salaries[i]) 

Надежда, что помогает

+0

-1 O (N ** 2), потому что list.index - это O (N) –

3

Это, по существу, решение EbO, сделанное в одном -лайнер с пользователем sorted(), а не list.sort, и несколько lvalues ​​в присваивании для получения отдельного списка (названного как оригинал, но с префиксом s_) dir ectly.

>>> email = ['[email protected]', '[email protected]'] 
>>> salaries = [50000, 60000] 
>>> ids = [2,1] 

>>> s_email, s_salaries, s_ids = zip(*sorted(zip(email, salaries, ids))) 

>>> s_email 
('[email protected]', '[email protected]') 
>>> s_salaries 
(60000, 50000) 
>>> s_ids 
(1, 2) 
>>> 
+0

, очень хорошо подходит для хранения списков. – KronoS

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