有兩個對應的1對1關係列表。Python通過值(一個列表)排序兩個通訊錄列表
names = ["David", "Peter", "Kate", "Lucy", "Kit", "Jason", "Judy"]
scores = [1,1,0.8,0.2,0.4,0.1,0.6]
我想告訴誰在1線場得分超過0.5,顯示:
Peter (1 point), David (1 point), Kate (0.8 point), Judy (0.6 point)
我想的是:
import operator
names = ["David", "Peter", "Kate", "Lucy", "Kit", "Jason", "Judy"]
scores = [1,1,0.8,0.2,0.4,0.1,0.6]
dictionary = dict(zip(names, scores))
dict_sorted = sorted(dictionary.items(), key=operator.itemgetter(1), reverse=True)
print dict_sorted
它提供:
[('Peter', 1), ('David', 1), ('Kate', 0.8), ('Judy', 0.6), ('Kit', 0.4), ('Lucy', 0.2), ('Jason', 0.1)]
它如何才能進一步得到結果想?注意:需要從大到小的排序結果。
2再爲測試目的列表:
names = ["Olivia","Charlotte","Khaleesi","Cora","Isla","Isabella","Aurora","Amelia","Amara","Penelope","Audrey","Rose","Imogen","Alice","Evelyn","Ava","Irma","Ophelia","Violet"]
scores = [1.0, 1.0, 0.8, 0.2, 0.2, 0.4, 0.2, 0.0, 1.0, 0.2, 0.4, 0.2, 1.0, 0.0, 0.8, 0.0, 1.0, 0.0, 0.6]
你不需要那個詞典。只需操作'zip'返回的元組列表,如mentalita的答案所示。順便說一句,在Python 3中,'zip'不返回一個列表,它返回一個迭代器,但mentalita的代碼在兩個版本中都可以正常工作。 –
@ PM2Ring,謝謝。 –