Как отсортировать список по алфавиту и иметь дополнительные списки, отсортированные в том же порядке - PullRequest
1 голос
/ 01 апреля 2010

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

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

E.g.,
Emails:
z@company.com
a@company.com

Salaries:
50000
60000

IDs:
2
1

Загадка: Я хочу отсортировать электронные письма так, чтобы a@c.com был первым, а z@c.com - последним, а Salaries - 60000, затем 50000, а ID - 1, затем 2.

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

Ответы [ 3 ]

5 голосов
/ 01 апреля 2010

Попробуйте:

emails = ["z@c.com", "a@c.com"]
salaries = [50, 60]
ids = [2, 1]

intermediate = zip(emails, salaries, ids)
intermediate.sort()

result = zip(*intermediate)
3 голосов
/ 01 апреля 2010

Это, по сути, решение ebo, созданное для однострочной записи с пользователем sorted (), а не list.sort, и несколькими значениями l в назначении, чтобы получить индивидуальный список (названный как оригинальный, но с s_ префикс) напрямую.

>>> email = ['z@company.com', 'a@company.com']
>>> salaries = [50000, 60000]
>>> ids = [2,1]

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

>>> s_email
('a@company.com', 'z@company.com')
>>> s_salaries
(60000, 50000)
>>> s_ids
(1, 2)
>>>
0 голосов
/ 01 апреля 2010

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

sortedEmails = emails[:]
sortedEmails.sort()

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

Надеюсь, что поможет

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