代码之家  ›  专栏  ›  技术社区  ›  324

是否可以在某个数字下查找字典值的键?

  •  2
  • 324  · 技术社区  · 2 年前

    例如,我有这样一本字典:

    sampleDict = {0: 0, 1: 10, 2: 2, 3: 3, 4: 4}
    

    我知道我可以使用 get() 函数获取特定键的值,但是否有方法以条件方式实现相反的操作?

    例如,如果我想获得 sampleDict . 是否有一个好的函数或一组函数可以用于快速有效地获得该值?我尝试了一个快速的谷歌搜索,但我想不出我想要什么。在本例中,我希望接收号码 1 由于键的值 1. 是字典中的最大值。

    3 回复  |  直到 2 年前
        1
  •  3
  •   Andrej Kesely    2 年前

    要获得最大值,您可以使用 max() 内置功能:

    sampleDict = {0: 0, 1: 10, 2: 2, 3: 3, 4: 4}
    
    max_key = max(sampleDict, key=sampleDict.get)
    print(max_key)
    

    打印:

    1
    
        2
  •  2
  •   Paul Dlc    2 年前

    这将返回具有您搜索的值的键数组。

    keys = [k for k, v in sampleDict.items() if v == value]
    print(keys)
    
        3
  •  2
  •   JacobIRR    2 年前

    可以使用循环查找与最大值匹配的键:

    sampleDict = {0: 0, 1: 10, 2: 2, 3: 3, 4: 4}
    
    def foo(sampleDict):
        m = max(sampleDict.values())
        for k, v in sampleDict.items():
            if v == m:
                return k
    
    print(foo(sampleDict))
    

    后果 : 1

    这显然不能解释任何dupe max值。它只找到与最大值匹配的第一个值。

    就性能而言,这假设输入大小不是很大。

    如果需要提高效率,可以在迭代时计算最大值。