0
这两个函数是否创建了x
等效?我不明白为什么在这种情况下使用0
作为输入时,itemgetter似乎会返回正确的变量。通过键值返回值列表的Python排序字典itemgetter
itemgetter是否正确按字典键排序?它们都打印相同
from operator import itemgetter
lvls = {1: ["t1","t2"], 2: ["t3","t4"], 3: ["tdfgdf99","x99"]}
x = sorted((v for k,v in lvls.items()),key=itemgetter(0),reverse=True)
print (x)
x = sorted((v for k,v in lvls.items()),key=lambda k: k,reverse=True)
print (x)
你知道'itemgetter'是如何工作的吗?在你的场景中,你指定'0'作为'itemgetter'的参数。它将返回按'f(lvls.items()[0])'排序的键,在这种情况下'f'是'v for k,v',因此它是基于'lvls.values()[0 ''反过来。希望对你有帮助 –
@new_to_coding @new_to_coding你的方法基本上可以得到相同的结果,如果你试图用键来排序它们,比如1,2,3,在你的字典中一个非常不同的值的情况下,这两个排序后的调用可能会返回完全不同的序列。 –
编号。这两种类型都完全忽略了'lvls'的关键字,并且只关注相关的值。第一个按每个值列表中的第一个项目排序,第二个使用每个值列表中的所有项目。顺便说一下,'lambda k:k'等价于默认的按键功能,只有较慢。 –