[英]How to sort a list alphabetically and have additional lists sorted in the same order
我有3個列表,每個列表具有相同的元素:電子郵件地址,薪水和ID
sort the other 2 lists (salaries and IDs). 我想按字母順序對電子郵件地址進行排序,並對其他兩個列表(薪水和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傳遞給函數以檢索更多列表。 the order of the IDs list. 這些列表將不需要排序,因為它們將 ID列表的順序。
嘗試:
emails = ["z@c.com", "a@c.com"]
salaries = [50, 60]
ids = [2, 1]
intermediate = zip(emails, salaries, ids)
intermediate.sort()
result = zip(*intermediate)
本質上,這是ebo的解決方案,使用sorted()而不是list.sort的用戶實現單線,並且在分配中使用多個左值直接獲取單個列表(命名為原始列表,但帶有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)
>>>
假設每個電子郵件ID是唯一的,那么它將起作用:
sortedEmails = emails[:]
sortedEmails.sort()
sortedSalaries = []
for email in sortedEmails:
i = emails.index(email)
sortedSalaries.append(salaries[i])
希望能有所幫助
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.