我有一本 Python 字典說
d = {"david":30, "vivian":40, "tom":20,"echo":40}
我的目標是:
- 回傳具有最大值的鍵。
- 如果值中存在平局,則將優先考慮具有最短長度(字母數)的鍵。因此,在這種情況下,將回傳“echo”。
我可以通過以下方式實作第一個目標:
max_key = max(d, key=d.get)
我怎樣才能實作第二個目標?
uj5u.com熱心網友回復:
max()根據引數回傳的值對專案進行排序key,因此這里的關鍵是找出一種方法來首先對較短的字典鍵進行排序。您可以通過從key函式回傳一個元組來做到這一點,其中包含字典鍵的值和長度。
max_key = max(d, key=lambda k: (d[k], -len(k)))
# 'echo'
由于您正在使用該max功能并且您希望選擇最小的長度,因此您必須使用-len(k).
uj5u.com熱心網友回復:
可能有更簡潔的方法可以做到這一點,但這似乎有效:
d = {"david":30, "vivian":40, "tom":20,"echo":40}
print(sorted([(v, k) for k, v in d.items()], key=lambda x: (x[0], -len(x[1])))[-1])
輸出:
(40, 'echo')
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/429014.html
上一篇:如何將字典輸出到文本檔案?
下一篇:如何在包含字典的串列中回圈
