我有3个列表,每个列表都有相同的元素:电子邮件地址,工资和ID
我想按字母顺序对电子邮件地址进行排序,以某种方式对其他2个列表(工资和ID)进行排序。
E.g.,
Emails:
z@company.com
a@company.com
Salaries:
50000
60000
IDs:
2
1
谜题: 我想对电子邮件进行排序,以便a@c.com是第一个,z @ c.com是最后一个,工资是60000然后是50000,ID是1然后是2。
其他细节:
1.列表长度相同,可以长于两个元素
2.我随后将ID传递给函数以检索更多列表。这些列表不需要排序,因为它们将采用 ID列表的顺序。
答案 0 :(得分:5)
尝试:
emails = ["z@c.com", "a@c.com"]
salaries = [50, 60]
ids = [2, 1]
intermediate = zip(emails, salaries, ids)
intermediate.sort()
result = zip(*intermediate)
答案 1 :(得分:3)
这实际上是ebo的解决方案,使用sorted()而不是list.sort的用户进行单行,并在分配中使用多个左值来获取单个列表(命名为原始但具有{{1直接。
s_
答案 2 :(得分:0)
假设每个电子邮件ID都是唯一的,那么这将有效:
sortedEmails = emails[:]
sortedEmails.sort()
sortedSalaries = []
for email in sortedEmails:
i = emails.index(email)
sortedSalaries.append(salaries[i])
希望有所帮助