簡體   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