簡體   English   中英

按d.values()排序字典'd',然后按相應鍵的長度排序

[英]Sort a dictionary 'd' by d.values(), then by length of the corresponding keys

我想獲得具有兩個約束的字典的顛倒順序。 首先,我根據值進行排序:

>>> d = {'I C': (2, 4), 'B I C': (2, 6), 'B I': (2, 6)}
>>> sortd = sorted(d.items(), key=lambda v: v[1], reverse=True)    (1)
>>> sortd
[('B I', (2, 6)), ('B I C', (2, 6)), ('I C', (2, 4))]

其次,對於具有相同值的項目,我想獲得之前具有最長密鑰的項目。 在前面的示例中,我希望這樣做:

[('B I C', (2, 6)), ('B I', (2, 6)), ('I C', (2, 4))]

是否可以直接在我的sorted()命令(1)中執行此操作?

在排序函數中包括鍵的長度:

sorted(d.items(), key=lambda v: (v[1], len(v[0])), reverse=True)

輸出:

>>> sorted(d.items(), key=lambda v: (v[1], len(v[0])), reverse=True)
[('B I C', (2, 6)), ('B I', (2, 6)), ('I C', (2, 4))]

因此,每個項目都按元組(value, len(key))排序; 較短的長度在較長的長度之后進行反向排序,但前提是元組的第一個元素相同。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM