Tho*_*ung 6 python sorting tuples
有没有更好的方式来排序比写一个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)]
Run Code Online (Sandbox Code Playgroud)
我想过使用compose,但这不在标准库中:
sorted(l, key=compose(itemgetter(1), itemgetter(0))
Run Code Online (Sandbox Code Playgroud)
我在libs中遗漏了哪些内容会使这段代码变得更好?
实施应该合理地使用100k项目.
上下文:我想对直方图项目的字典进行排序.键是元组(a,b),值是计数.最后,项目应按计数递减,a和b排序.另一种方法是展平元组并直接使用itemgetter,但这样会产生很多元组.
nin*_*cko 11
是的,你可以使用一个 key=lambda x: x[0][1]