2012-01-02 4 views
74

Chcę zaimplementować HashMap w Pythonie. Chcę poprosić użytkownika o dane wejściowe. w zależności od jego wejścia pobieram niektóre informacje z HashMap. Jeśli użytkownik wprowadzi klucz do HashMap, chciałbym pobrać odpowiednią wartość.Hash Map w języku Python

Jak zaimplementować tę funkcjonalność w języku 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

Odpowiedz

135

Python dictionary jest wbudowany typ, który obsługuje par klucz-wartość.

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

jak również za pomocą słowa kluczowego dict:

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

czyli

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

Drugi przykład po prostu tworzy dyktat w taki sam sposób jak poprzednio, a następnie kopiuje go. Innym zastosowaniem 'dict', które byłoby bardziej odpowiednie w tym kontekście, jest' dict (key1 = value1, key2 = value2, ...) 'ale to wymaga kluczy do ciągów znaków, które są również poprawnymi identyfikatorami Pythona (i wewnętrznie, to również tworzy słownik). – delnan

+0

Ah ciekawe, nie zdawałem sobie sprawy, że nagie ciągi były prawidłowymi identyfikatorami. – Alan

+0

Nie jestem pewien, czy rozumiem cię poprawnie (czym są "nagie struny"?), Ale uważam, że masz go w tył. Twój zaktualizowany drugi przykład jest nieprawidłowy i nigdy nie zamierzałem podawać czegoś takiego. [Argumenty słów kluczowych] (http: //docs.python.org/tutorial/controlflow.html # keyword-arguments) składnia, która akceptuje * tylko * naga identyfikatory, wewnętrznie używa słownika. Konstruktor 'dict' obsługuje argumenty słów kluczowych i działa jak' def dict (** kwds): return kwds' jeśli podane argumenty słów kluczowych. – delnan

8

mapy Hash są wbudowane w Pythonie, są one nazywane dictionaries:

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

Zastosowanie:

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

Więcej informacji można znaleźć w dokumentacji, np. wbudowane metody i tak dalej. Są świetne i bardzo powszechne w programach Pythona (co nie dziwi).

14

Wszystko, co chciałeś (w czasie, gdy pierwotnie zadano to pytanie) było wskazówką. Oto podpowiedź: w Pythonie możesz użyć dictionaries.

11

Jest wbudowany w Pythonie. Zobacz dictionaries.

Bazując na przykład:

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

Następnie można uzyskać do niego dostęp tak:

sachine = streetno["1"] 

również wspomnieć: można go używać non-zmienny typ danych jako klucz. Oznacza to, że może użyć krotki, klucza logicznego lub łańcucha jako klucza.

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

A do pobrania wartości:

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

Albo

name = streetno[3] 

Że używa liczby jak klucze, umieścić w cudzysłowie numerów używać strun jak klucze.