Ces deux fonctions créent-elles x
? Je ne comprends pas pourquoi itemgetter semble retourner la variable correcte en utilisant 0
comme une entrée dans ce cas.Dictionnaire de tri Python par clé renvoyant la liste des valeurs itemgetter
Le tri par article est-il correctement trié par clé dictionnaire? Ils ont tous deux la même impression
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)
savez-vous comment 'itemgetter' fonctionne? Dans votre scénario, vous spécifiez '0' comme argument pour' itemgetter'. Il va retourner les clés triées par 'f (lvls.items() [0])' où dans ce cas 'f' est' v pour k, v' donc c'est un tri basé sur 'lvls.values () [0 ] 'à l'envers. espérons que cela aide –
@new_to_coding votre approche donne fondamentalement les mêmes résultats, par hasard, si vous essayez de les trier par des clés ie 1, 2, 3. Dans un scénario très différent de valeurs dans votre dictionnaire, ces deux appels triés pourraient renvoyer séquences entièrement différentes. –
Non. Ces deux sortes ignorent totalement les clés de 'lvls' et ne regardent que les valeurs associées. Le premier est trié par le 1er élément dans chaque liste de valeur, le second utilise tous les éléments de chaque liste de valeurs. BTW, 'lambda k: k' est équivalent à la fonction clé par défaut, seulement plus lent. –