2012-04-08 29 views
10

Podría confundirse entre hashmap en Java y map/dict en Python.
pensé que el hash (k/v abstracción) de Java es una especie de la misma que dict en PythonDiferencia entre mapa y dict

Pero entonces ¿qué hace el map tipo de datos?

¿Es la misma abstracción que la abstracción hashmap? Si es así, ¿cómo es diferente del diccionario?
Revisé los documentos, pero me llevó a un paradigma completamente diferente: la programación funcional.

+1

Su pregunta es un poco confuso, pero para Python, esto podría ser la documentación que buscas: http : //docs.python.org/library/stdtypes.html # mapping-types-dict –

Respuesta

15

Map no es un tipo de datos en python. Aplica una función a una serie de valores y devuelve el resultado.

>>> def f(x): 
...  return x**2 
... 
>>> map(f, range(5)) 
[0, 1, 4, 9, 16] 

A menudo, para un caso simple como el de "ser pitónico" usamos la lista de comprensiones.

>>> [x**2 for x in range(5)] 
[0, 1, 4, 9, 16] 

Estás justo en tu comparación de hashmaps y dicts.

+3

Sí, el mapa no es un tipo de datos :-) Ver http://docs.python.org/library/functions.html#map –

+0

@MaksymPolshcha gracias por el enlace, lo he editado en mi publicación. –

+0

A partir de Python 3, el mapa * es * un tipo de datos - [ver mi respuesta.] (Https://stackoverflow.com/a/45087342/1048186) –

2

No hay datos de este tipo en python. map es una función que mapea una función a una secuencia.

def increment(n): 
    return n+1 
l = [1,2,3] 
map(increment, l) 

le dará una nueva lista [2,3,4]

2

En esencia, un Map en Java es como un dict en Python: tanto los datos de estructuras crean asociaciones entre claves y valores, con la esperada O (1) rendimiento para las operaciones get() y .

La estructura de datos Map en Java no se debe confundir con la función map() en Python:

mapa (función, iterable, ...)

Aplicar la función de cada elemento de iterable y vuelta una lista de los resultados. Si se pasan argumentos iterables adicionales, la función debe tomar que muchos argumentos y se aplica a los artículos de todas las iterables en paralelo

+2

"Rendimiento O (1) garantizado" no es del todo correcto. Ver http://wiki.python.org/moin/TimeComplexity – agf

0

En Python 3, mapa devuelve un tipo de datos iterables, equivalente a lo que se devuelve mediante IMAP itertools en Python 2.

para obtener los mismos resultados en Python 3 como Nolan Royalty's Python 2 ejemplo, usted escribiría:

>>> def f(x): 
...  return x**2 
... 
>>> list(map(f, range(5))) 

[0, 1, 4, 9, 16] 

Si no lo envuelve en una lista en Python 3, obtendrá una mapa obj ect:

>>> map(f, range(5)) 
... <map object at 0x000000000327E780> 

Así que no son objetos del mapa, que son iterable, en Python 3.

Cuestiones relacionadas