Je cherche des conseils pour faire ce qui suit d'une manière plus pythonique.Façon pythonique de trier la liste des objets par une valeur dict (par clé) contenue dans l'objet
Tenir compte:
class MyObj(object):
def __init__(self):
self.dict_properties = {}
Supposons que j'ai une liste qui contient plusieurs instances MyObj:
mylist = [<__main__.MyObj object at 0x1005e3b90, ...]
Maintenant, je veux trier mylist
en fonction de la valeur d'une certaine clé dans dict_properties
en MyObj.
Qu'est-ce que le travail est:
mylist.sort(lambda x,y: cmp(x.dict_properties['mykey'],
y.dict_properties['mykey']))
mais à peine sent pythonique.
Y a-t-il un meilleur moyen (en utilisant peut-être operator.attrgetter
)?
Les étiquettes ne reflètent pas le niveau de la personne qui demande. Personne ne prétend que vous êtes un débutant Christophe, mais chaque jour il y aurait au moins quelques questions à poser ** exactement la même chose que vous **, et comme la réponse est facile à trouver dans les docs, Par conséquent, une question doit être taguée [débutant]. Veuillez arrêter de supprimer cette balise. Merci. – SilentGhost
si vous doutez de ma réclamation sur la fréquence ou les doublons s'il vous plaît examiner: http://stackoverflow.com/questions/tagged/python+sorting – SilentGhost
J'ai une opinion différente sur la nécessité d'un tag «débutant» sur cette question: contrairement à la plupart D'autres questions de ce type, j'ai fourni un moyen de travailler pour ce faire et ensuite spécifiquement demandé des alternatives/d'autres façons de le faire d'une manière plus «pythonique». Semble la réponse était évidente (une seule approche dans les réponses) même si je ne me suis pas immédiatement rendu compte que c'était supposé être le plus propre =. Mais je vais juste laisser la balise alors, puisque je ne suis pas intéressé par une guerre (supplémentaire) de rollback/editing. – ChristopheD