如何根据A的值对作为字典A的子集的以下列表B进行排序?
A = {1: 10, 2:20, 3: 15, 4: 1}
B = [1, 3, 4]
我的解决方案应该是
B = [4, 1, 3]
自
A[4] < A[1] < A[3]
答案 0 :(得分:6)
将A.get
用作key
A = {1: 10, 2:20, 3: 15, 4: 1}
B = [1, 3, 4]
>>> sorted(B, key=A.get)
[4, 1, 3]
请注意,您可以将默认值设置为.get
方法的参数,这样,如果字典中不存在给定键,则可以自己设置位置(例如最后位置或第一个)。例如:
B = [1, 3, 4, 11]
>>> sorted(B, key=lambda k: A.get(k, -1))
[11, 4, 1, 3]
>>> sorted(B, key=lambda k: A.get(k, float('inf')))
[4, 1, 3, 11]
或者,如@jpp突出显示的那样,
>>> sorted(B, key=A.__getitem__)
如果您希望在引用的键不存在时引发KeyError
。