繁体   English   中英

排序字典键的子集

[英]Sort subset of dictionary keys

如何根据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]

使用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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM