基于哈希集合的值获取键的 Golang 程序


在 Golang 中,我们可以使用哈希图执行各种操作,例如删除、更新和存储哈希集合中的值。在本文中,我们将通过两个不同的示例来了解如何从哈希集合中基于值获取键。在第一个示例中,我们将使用一个外部函数并迭代映射以从值获取键,在第二个示例中,我们将使用反向映射从所需值获取键。

算法

  • 创建一个名为 main 的包并在程序中声明 fmt(格式化包),其中 main 生成可执行代码,而 fmt 帮助格式化输入和输出。

  • 创建一个名为 get_value_from_key 的外部函数,它有两个输入:哈希图和要获取其键的值。

  • 迭代哈希图,并在每次迭代中检查该值是否等于哈希图的 val。

  • 如果为真,则返回其值被检查的键,但如果哈希图中不存在该值,则返回空字符串。

  • 在 main 函数中,使用映射字面量创建一个哈希图,其中键的类型为字符串,值的类型为整数。

  • 使用两个参数从 main 调用外部函数,并在 key 中获取返回值。

  • 再次使用哈希图中不存在的值调用该函数,在这种情况下将返回一个空字符串。

  • 使用 fmt.Println() 函数在控制台上打印键,其中 ln 表示换行。

示例 1

在此示例中,我们将创建一个具有两个参数的外部函数,即哈希图和要打印其键的值。

package main

import "fmt"

func get_value_from_key(hash map[string]int, value int) string {
   for key, val := range hash {
      if val == value {   //check if the value is equal to the val from hashmap return the key
         return key
      }
   }
   return ""
}
   
func main() {
   
   // Example hash collection
   hashmap := map[string]int{
      "one":   10,
      "two":   20,
      "three": 30,
   }
   
   // obtain key for value 2
   key := get_value_from_key(hashmap, 20)
   fmt.Println("The key to corresponding value is:")
   fmt.Println(key)  
   
   // obtain key for value 4 (not found)
   key = get_value_from_key(hashmap, 40)
   fmt.Println(key)
}

输出

The key to corresponding value is:
two

示例 2

在此示例中,我们将创建一个映射,在其中我们将以相反的方式将键分配给值,然后我们将返回作为输入给定的值的相应键。输出将是相应值的键。让我们通过代码和算法来探讨它。

package main
   
import "fmt"
   
func get_key_from_value(hash map[string]int, value int) string {
   reverseHash := make(map[int]string)
   for key, val := range hash {
      reverseHash[val] = key  //use map reversal to add the leys to the following values
   }
   return reverseHash[value]  //return the key following to this value
}

func main() {

   // Example hash collection
   hashmap := map[string]int{  
      "one":   10,
      "two":   20,
      "three": 30,
   }
   
   // obtain key for value 2
   key := get_key_from_value(hashmap, 20)
   fmt.Println("The key of the above value is: ")
   fmt.Println(key) // Output: two
   
   // obtain key for value 4 (not found)
   key = get_key_from_value(hashmap, 40)
   fmt.Println(key) // Output:
}

输出

The key of the above value is: 
two

结论

我们使用两种方法执行了从哈希集合中基于值获取键的程序。在第一个示例中,我们使用了外部函数和迭代来获取所需的键,在第二个示例中,我们使用了反向映射技术来获取所需的输出。

更新于: 2023年3月27日

447 次浏览

开启您的 职业生涯

通过完成课程获得认证

开始学习
广告