有沒有更好的方式來排序嵌套元組值的列表比寫一個itemgetter替代提取嵌套元組值:排序列表值
def deep_get(*idx):
def g(t):
for i in idx: t = t[i]
return t
return g
>>> l = [((2,1), 1),((1,3), 1),((3,6), 1),((4,5), 2)]
>>> sorted(l, key=deep_get(0,0))
[((1, 3), 1), ((2, 1), 1), ((3, 6), 1), ((4, 5), 2)]
>>> sorted(l, key=deep_get(0,1))
[((2, 1), 1), ((1, 3), 1), ((4, 5), 2), ((3, 6), 1)]
我想過使用撰寫,但是這不在標準庫中:
sorted(l, key=compose(itemgetter(1), itemgetter(0))
有沒有什麼我錯過了在庫中,這將使這段代碼更好?
該實施應該與100k項目合理合作。
上下文:我想排序一個直方圖項目的字典。鍵是一個元組(a,b),值是計數。最後,這些項目應按降序a和b排序。另一種方法是平滑元組並直接使用itemgetter,但這樣會產生大量的元組。
有沒有我知道的。你的方法很好,因爲它是恕我直言。 – 2011-05-28 16:25:00
「實施應該合理地處理10萬件物品。」 - 這條線是不必要的;所有使用'sort'的實現都可以在100k條件下合理運行 – ninjagecko 2011-05-28 18:18:33
@ninjagecko如果對3個條目或100k或1T進行排序,實現將會有所不同。 – 2011-05-30 06:55:58