2012-01-02 14 views
74

Voglio implementare una HashMap in Python. Voglio chiedere a un utente un input. a seconda del suo input, sto recuperando alcune informazioni da HashMap. Se l'utente inserisce una chiave di HashMap, vorrei recuperare il valore corrispondente.Hash Map in Python

Come implementare questa funzionalità in 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

risposta

135

Python dictionary è dotato di un tipo che supporta coppie di valori-chiave.

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

così come usando la parola chiave dict:

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

o:

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

Il secondo esempio crea semplicemente un dict nello stesso modo di prima e poi lo copia. L'altro uso 'dict', che sarebbe più appropriato in questo contesto, è' dict (key1 = value1, key2 = value2, ...) 'ma che richiede le chiavi per stringhe che sono anche identificatori Python validi (e internamente, questo crea anche un dizionario). – delnan

+0

Ah interessante, non mi sono reso conto che le stringhe nude erano identificatori validi. – Alan

+0

Non sono sicuro se ti capisco correttamente (cosa sono "stringhe nude"?), Ma credo che tu l'abbia fatto all'indietro. Il tuo secondo esempio aggiornato non è valido e non ho mai avuto intenzione di indicare qualcosa del genere. Gli [argomenti per le parole chiave] (http: //docs.python.org/tutorial/controlflow.html # keyword-arguments) la sintassi, che accetta * solo * identificatori nudi, utilizza internamente un dizionario. Il costruttore 'dict' supporta gli argomenti delle parole chiave e funziona come' def dict (** kwds): restituisce kwds' se gli argomenti sono specificati. Il secondo esempio – delnan

8

mappe Hash sono built-in in Python, si chiamano 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" 

Vedere la documentazione per ulteriori informazioni, ad es. metodi built-in e così via. Sono fantastici e molto comuni nei programmi Python (non sorprendentemente).

14

Tutto quello che volevi (al momento in cui la domanda era stata inizialmente richiesta) era un suggerimento. Ecco un suggerimento: in Python puoi usare dictionaries.

11

È integrato in Python. Vedi dictionaries.

Basato sul tuo esempio:

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

È quindi possibile accedere in questo modo:

sachine = streetno["1"] 

anche degno di nota: si può utilizzare qualsiasi tipo di dati non mutabile come chiave. Cioè, può usare una tupla, booleana o stringa come chiave.

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

E per recuperare i valori:

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

O

name = streetno[3] 

che sta usando il numero come chiavi, mettere le virgolette intorno ai numeri di usare le stringhe come chiavi.