我觉得不能解决这样的问题真的很蠢,但我指的是空白。我需要提出一个简短而优雅的方法来做到这一点,出于某种原因我不能!
这个概念非常简单
我有一个[4,3,5,2,1]
的列表,我有五个人A, B, C, D, E
A=4 B=3 C=5 D=2 E=1
现在,我需要根据他们的数字按升序排列它们,以便它们成为
['E', 'D', 'B', 'A', 'C']
我真的不明白为什么我无法想出这个D:
答案 0 :(得分:5)
order = [4, 3, 5, 2, 1]
people = "ABCDE"
result = [x[1] for x in sorted(zip(order, people))]
答案 1 :(得分:3)
您可以创建一个字典,将数字与每个“个人”相关联:
>>> a = [4, 3, 5, 2, 1]
>>> b = ["A", "B", "C", "D", "E"]
>>> d = dict(zip(b, a))
>>> d
{'A': 4, 'C': 5, 'B': 3, 'E': 1, 'D': 2}
使用此词典,您可以按值轻松对键进行排序:
>>> sorted(d, key=d.get)
['E', 'D', 'B', 'A', 'C']
答案 2 :(得分:2)
使用zip
将两个列表合并到一个元组[(A,1),(B,3),...,(E,5)]
列表中,然后使用sort和自定义cmp
方法比较这些数字,然后使用map
拉回信件。