假設我有一個字典/串列/任何東西。我正在根據一些函式(不直接依賴于值,方形作為一個例子)對這個集合進行排序:
我有一個字典/串列/任何東西。
dict_a = {('a'/span>, 3), ('b', 2), ('c', 1)}。
def temp(x)。
return x**2.
print(sorted(dict_a, key=lambda item:temp(item[1] ))
是否有辦法/語法來獲取/回傳從呼叫lambda得到的鍵的值(通過它對結果串列進行排序),以便以后不需要再計算它,例如:
。[(1, ('c'/span>, 1)), (4, ('b', 2)), (9, ('a', 3))
而不是
[('c', 1) 。('b', 2), ('a', 3) ]
最好是在一行代碼中,而且只有標準庫。Python是否有能力做到這一點?謝謝!
uj5u.com熱心網友回復:
你已經可以在排序之前map它:
>>> sorted(map(lambda x: (temp(x[1]), x), dict_a))
[(1, ('c', 1)), (4, ('b', 2)),(9,('a',3))]
>>>
或者用一個串列理解:
>>> sorted([(temp(x[1], x) for x in dict_a] )
[(1, ('c', 1)), (4, ('b', 2)),(9,('a',3))]
>>>
uj5u.com熱心網友回復:
只要事先做一下轉換,然后進行排序:
dict_a = {('a', 3) 。('b', 2), ('c', 1)}。
def temp(x)。
return x**2.
expected = [(1, ('c', 1), (4, ('b', 2)), (9, ('a', 3))]
transformed = [(temp(item[1]), item) for item in dict_a]
assert sorted(transformed) == expected
注意,你在問題中打錯了('c', 3),并且dict_a不是一個dict,而是一組圖元。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/310840.html
標籤:
上一篇:如何在javascript中僅僅根據數字對字母數字陣列進行排序?
下一篇:洗掉文本檔案中每一列的重復內容
