2012-01-02 41 views
74

Quiero implementar un HashMap en Python. Quiero pedirle a un usuario una entrada. dependiendo de su entrada, estoy recuperando información de HashMap. Si el usuario ingresa una clave de HashMap, me gustaría recuperar el valor correspondiente.Hash Map en Python

¿Cómo implemento esta funcionalidad en Python?

HashMap<String,String> streetno=new HashMap<String,String>(); 
    streetno.put("1", "Sachin Tendulkar"); 
    streetno.put("2", "Dravid"); 
    streetno.put("3","Sehwag"); 
    streetno.put("4","Laxman"); 
    streetno.put("5","Kohli") 
+0

http://meta.stackexchange.com/questions/15650/ban-lmgtfy-let-me-google-that-for-you-links – Alan

Respuesta

135

Python dictionary es un tipo incorporado que soporta pares de valores clave.

streetno = {"1":"Sachine Tendulkar", "2":"Dravid", "3":"Sehwag", "4":"Laxman","5":"Kohli"} 

, así como el uso de la palabra clave dict:

streetno = dict({"1":"Sachine Tendulkar", "2":"Dravid"}) 

o:

streetno = {} 
streetno["1"] = "Sachine Tendulkar" 
+4

El segundo ejemplo simplemente construye un dict de la misma manera que antes y luego lo copia El otro uso 'dict', que sería más apropiado en este contexto, es' dict (key1 = value1, key2 = value2, ...) 'pero eso requiere las claves para las cadenas que también son identificadores de Python válidos (e internamente, esto también crea un diccionario). – delnan

+0

Ah, interesante, no me di cuenta de que las cuerdas desnudas eran identificadores válidos. – Alan

+0

No estoy seguro si te entiendo correctamente (¿qué son las "cuerdas desnudas"?), Pero creo que lo hiciste al revés. Su segundo ejemplo actualizado no es válido y nunca tuve la intención de decir algo así. Los [argumentos de palabra clave] (http: //docs.python.sintaxis de org/tutorial/controlflow.html # keyword-arguments), que acepta * solo * identificadores desnudos, internamente utiliza un diccionario. El constructor 'dict' admite argumentos de palabras clave y funciona como' def dict (** kwds): return kwds' si se le dan argumentos de palabra clave. – delnan

8

mapas Hash están incorporados en Python, que se llaman dictionaries:

streetno = {}      #create a dictionary called streetno 
streetno["1"] = "Sachin Tendulkar" #assign value to key "1" 

Uso:

"1" in streetno      #check if key "1" is in streetno 
streetno["1"]      #get the value from key "1" 

Consulte la documentación para obtener más información, p. métodos incorporados, etc. Son geniales y muy comunes en los programas de Python (como era de esperar).

14

Todo lo que quería (en el momento en que se formuló originalmente la pregunta) era una pista. Aquí hay una pista: en Python, puede usar dictionaries.

11

Está incorporado para Python. Ver dictionaries.

Sobre la base de su ejemplo:

streetno = {"1": "Sachine Tendulkar", 
      "2": "Dravid", 
      "3": "Sehwag", 
      "4": "Laxman", 
      "5": "Kohli" } 

A continuación, puede acceder a él de este modo:

sachine = streetno["1"] 

También vale la pena mencionar: se puede utilizar cualquier tipo de datos que no son mutables como clave. Es decir, puede usar una tupla, un booleano o una cadena como clave.

9
streetno = { 1 : "Sachin Tendulkar", 
      2 : "Dravid", 
      3 : "Sehwag", 
      4 : "Laxman", 
      5 : "Kohli" } 

Y para recuperar valores:

name = streetno.get(3, "default value") 

O

name = streetno[3] 

Eso está usando el número como claves, poner comillas alrededor de las cantidades a utilizar cadenas como claves.

Cuestiones relacionadas