有没有更好的方式来排序嵌套元组值的列表比写一个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