174 votes

Rechercher l'index d'un dict dans une liste, en faisant correspondre la valeur du dict

J’ai une liste de dictons :

Comment puis-je trouver efficacement la position de l’index [0],[1] ou [2] en faisant correspondre le nom = 'Tom' ?

S’il s’agissait d’une liste unidimensionnelle, je pourrais faire list.index() mais je ne sais pas comment procéder en recherchant les valeurs des dicts dans la liste.

210voto

tokland Points 29813
<pre><code></code><p><em>obtenir</em> des opérations serait O(1) temps. Une idée :</p><pre><code></code></pre></pre>

73voto

Emile Points 617

Une version simple et lisible est

14voto

aeter Points 1395

Ce ne sera pas efficace, car vous devez parcourir la liste en vérifiant chaque élément qu’elle contient (O(n)). Si vous voulez de l’efficacité, vous pouvez utiliser dict of dicts. Sur la question, voici un moyen possible de le trouver (bien que, si vous voulez vous en tenir à cette structure de données, il est en fait plus efficace d’utiliser un générateur comme Brent Newey l’a écrit dans les commentaires; voir aussi la réponse de tokland):

4voto

michael salmon Points 337

Il semble plus logique d’utiliser un combo filtre/index :

Et si vous pensez qu’il pourrait y avoir plusieurs correspondances:

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X