2 votes

Trouver la valeur de la clé d'une liste python pour l'utiliser avec d'autres tableaux

Je travaille actuellement sur un programme python qui effectue un certain nombre de calculs en utilisant 3 tableaux différents. Les valeurs du tableau à chaque clé (c.-à-d. i[1] est lié à a[1] qui est également lié à q[1] .

J'essaie de trouver quelle valeur de q est la plus élevée (j'utilisais la fonction q.max() ), mais je ne sais pas comment trouver la valeur de la clé pour cette valeur maximale. Par exemple, si le maximum est q[67] et est égal à 111110029233 comment puis-je obtenir le [67] de sorte que je puisse utiliser cette clé pour trouver les valeurs correspondantes dans l'application i et dans a liste.

3voto

Bula Points 812

Essayez ça :

import operator
max(enumerate(q),key=operator.itemgetter(1))[0]

3voto

Vader Points 864
>>> q = [1,2,3,4,5,6,5,4,3,2,1]
>>> q.index(max(q))
5

2voto

Serdalis Points 5376

max ne retournera pas l'index, pour le trouver vous devrez faire une boucle dans la liste comme ceci :

q = [1,2,3,4,5,6,5,4,3,2,1]

def find_max(li):
    max_item = max(li)
    return (li.index(max_item), max_item)

print find_max(q)

Vous pouvez ensuite utiliser le premier élément de la valeur renvoyée pour accéder aux éléments connexes de vos listes.

Alternativement, si vous ne voulez que l'index, vous pouvez utiliser :

q.index(max(q))

comme répondu dans Cette réponse de Stack overflow

1voto

Loren Abrams Points 632
q = [1,2,3,4,5,100,-1,0]
index = max(enumerate(q), key=lambda x: x[1])[0]

0voto

Blckknght Points 20780

Il semble que votre but ultime soit de trouver le a y i valeurs qui produisent les plus grandes q valeur. Actuellement, vous essayez de trouver l'indice de cette valeur maximale. q de sorte que vous pouvez l'utiliser pour accéder aux valeurs correspondantes dans i y a mais je pense qu'il est plus efficace de s'y prendre d'une autre manière.

max_q, max_i, max_a = max(zip(q, i, a))

Cela permet de trouver le maximum q et la valeur correspondante i y a valeurs. Voici comment cela fonctionne :

D'abord le zip construit un générateur (ou une liste, si vous utilisez Python 2) de tuples de valeurs correspondantes à partir de chacune des listes. C'est-à-dire qu'elle produit (q[0], i[0], a[0]) suivi par (q[1], i[1], a[1]) et ainsi de suite.

Ensuite, le max comparera les tuples, en utilisant la première valeur (de la fonction q ) comme la pièce la plus importante. S'il existe une valeur maximale unique dans q ce sera ça. S'il y a une égalité pour le maximum, le code que j'ai écrit ci-dessus préférera celui qui a le plus grand nombre de points. i et, en cas d'égalité, celui dont la valeur est la plus élevée. a valeur.

Enfin, il décompose le tuple maximum en max_q , max_i y max_a afin de pouvoir les utiliser individuellement.

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