2011-03-08 27 views

Respuesta

23

El diccionario "a" es una estructura iterable en python. Cuando recorre con for x in a, está repitiendo las teclas en el diccionario.

En la segunda línea, la función máxima toma dos argumentos: un objeto iterable (a) y una función opcional "clave". La función de clave se usará para evaluar el valor de los elementos en a; se devolverá el más grande.

Ejemplos:

>>> a = dict(((1,3),(0,-1),(3,21))) 
>>> for x in a: 
...  print x #output the value of each item in our iteration 
... 
0 
1 
3 

señalar aquí que sólo las "claves" se emiten. Al pasar cada una de estas teclas para "obtener" ...

>>> a.get(0) 
-1 
>>> a.get(1) 
3 
>>> a.get(3) 
21 

Obtenemos el valor para cada tecla. Ahora mira cómo funciona max.

>>> b=[2, 3, 5, 6, 4] 
>>> max(b) 
6 
>>> def inverse(x): 
...  return 1.0/x 
... 
>>> max(b, key=inverse) 
2 

Como puede ver, max (de forma predeterminada) solo encontrará el número más grande en nuestra lista iterable. Si definimos la función "inversa", devolverá el artículo más grande en b para el cual inverse(item) es el más grande.

combinar estas dos preguntas y vemos que max(a, key=a.get) va a devolver el item en a para los que el valor de a.get(item) es más grande. es decir, la clave correspondiente al valor más grande.

+0

Si realmente te interesa, puedes intentar usar una función lambda: 'max (a, key = lambda x: a [x])' – ProdigySim

1

¿Estás preguntando cómo funciona el parámetro key? Se necesita un invocable, que se aplica a todos los elementos del diccionario. En el caso de su diccionario, simplemente se hace esto:

a.get(1) # 3 
a.get(0) # -1 
a.get(3) # 21 

max utiliza entonces el resultado de la función clave que el valor de comparación, por lo que, obviamente, va a elegir el elemento que devuelve el valor más alto, es decir 3.

Cuestiones relacionadas