2012-01-02 212 views
74

我想在Python中实现哈希映射。我想要求用户输入。取决于他的输入,我从HashMap中检索一些信息。如果用户输入HashMap的键,我想检索相应的值。Python中的哈希映射

如何在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 2012-01-02 20:09:29

回答

135

Python dictionary是支持键值对的内置类型。

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

以及使用dict关键字:

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

或:

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

第二个示例只是以与之前相同的方式构建字典,然后复制它。另一个使用'dict',在这种情况下更适合,它是'dict(key1 = value1,key2 = value2,...)',但是这需要字符串的键也是有效的Python标识符(并且在内部,这也创建了一本字典)。 – delnan 2012-01-02 17:31:54

+0

有趣的是,我没有意识到裸体字符串是有效的标识符。 – Alan 2012-01-02 17:33:55

+0

我不确定我是否正确理解你(什么是“裸体字符串”?),但我相信你已经把它弄倒了。你更新的第二个例子是无效的,我从来没有打算说这样的工作。 [关键字参数](http://docs.python。org/tutorial/controlflow.html#keyword-arguments)语法,它接受* only *裸体标识符,在内部使用一个字典。如果给定关键字参数,'dict'构造函数支持关键字参数并且像'def dict(** kwds):return kwds'一样工作。 – delnan 2012-01-02 17:39:31

8

哈希地图是内置在Python中,他们是所谓的dictionaries

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

用法:

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

请参阅文档以获取更多信息,例如,内置方法等等。它们很棒,在Python程序中很常见(不出所料)。

14

所有你想要的(当时问题最初被问到)是一个提示。这里有个提示:在Python中,你可以使用dictionaries

11

它内置于Python。见dictionaries

根据您的例子:

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

然后,您可以访问它,像这样:

sachine = streetno["1"] 

另外值得一提的是:它可以使用任何非可变数据类型作为重点。也就是说,它可以使用元组,布尔值或字符串作为关键字。

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

,并检索值:

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

或者

name = streetno[3] 

这是使用数字作为键,把周围的数字加引号使用字符串作为键。