我想在Python中实现一个HashMap。我想让用户输入。根据他的输入,我正在从HashMap中检索一些信息。如果用户输入HashMap的一个键,我想检索相应的值。

我如何在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")

当前回答

这就是我对LeetCode问题706的解决方案:

一个哈希映射类,有三个方法:get、put和remove

class Item:
    def __init__(self, key, value):
        self.key = key
        self.value = value
        self.next = None


class MyHashMap:

    def __init__(self, size=100):
        self.items = [None] * size
        self.size = size

    def _get_index(self, key):
        return hash(key) & self.size-1

    def put(self, key: int, value: int) -> None:
        index = self._get_index(key)
        item = self.items[index]
        if item is None:
            self.items[index] = Item(key, value)
        else:
            if item.key == key:
                item.value = value

            else:
                while True:
                    if item.key == key:
                        item.value = value
                        return
                    else:
                        if not item.next:
                            item.next = Item(key, value)
                            return
                        item = item.next



    def get(self, key: int) -> int:
        index = self._get_index(key)
            
        if self.items[index] is None:
            return -1
        item = self.items[index]
        while True:
            if item.key == key:
                return item.value
            else:
                if item.next:
                    item = item.next
                else:
                    return -1
        
        

    def remove(self, key: int) -> None:
        value = self.get(key)
        if value > -1:
            index = self._get_index(key)
            item = self.items[index]
            if item.key == key:
                self.items[index] = item.next if item.next else None
                return
                
            while True:
                if item.next and item.next.key == key:
                    item.next = item.next.next
                    return
                else:
                    if item.next:
                        item = item.next
                    else:
                        return

其他回答

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

和检索值:

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

Or

name = streetno[3]

这是用数字作为键,在数字周围加上引号,用字符串作为键。

Python中的字典是实现这一点的最佳方式。我们可以使用给定的<key,value>对创建以下字典:

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

要提取特定键的值,我们可以直接使用d[key]:

name = d["1"] # The value of name would be "Sachin Tendulkar" here

这就是我对LeetCode问题706的解决方案:

一个哈希映射类,有三个方法:get、put和remove

class Item:
    def __init__(self, key, value):
        self.key = key
        self.value = value
        self.next = None


class MyHashMap:

    def __init__(self, size=100):
        self.items = [None] * size
        self.size = size

    def _get_index(self, key):
        return hash(key) & self.size-1

    def put(self, key: int, value: int) -> None:
        index = self._get_index(key)
        item = self.items[index]
        if item is None:
            self.items[index] = Item(key, value)
        else:
            if item.key == key:
                item.value = value

            else:
                while True:
                    if item.key == key:
                        item.value = value
                        return
                    else:
                        if not item.next:
                            item.next = Item(key, value)
                            return
                        item = item.next



    def get(self, key: int) -> int:
        index = self._get_index(key)
            
        if self.items[index] is None:
            return -1
        item = self.items[index]
        while True:
            if item.key == key:
                return item.value
            else:
                if item.next:
                    item = item.next
                else:
                    return -1
        
        

    def remove(self, key: int) -> None:
        value = self.get(key)
        if value > -1:
            index = self._get_index(key)
            item = self.items[index]
            if item.key == key:
                self.items[index] = item.next if item.next else None
                return
                
            while True:
                if item.next and item.next.key == key:
                    item.next = item.next.next
                    return
                else:
                    if item.next:
                        item = item.next
                    else:
                        return

你所需要的(在最初问问题的时候)只是一个暗示。这里有一个提示:在Python中,您可以使用字典。

哈希映射是Python中内置的,它们被称为字典:

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程序中非常常见(这并不奇怪)。