Skip to main content
 首页 » 编程设计

python之确定具有最多值的键

2025年05月04日15lovecherry

dictionary = {"key1": ["Item1", "Item2"], "key2": ["Item3", "Item4"]} 

使用上面的字典,尝试遍历它并返回具有最多值的键。

我正在尝试这个:

def most_values(a): 
    return max(a, key=a.get) 

虽然它会返回它首先检查的任何 key ,但这还不错。接下来我尝试了:

def most_values(a): 
    count = 0 
    high = "" 
    for t in a: 
        if len(a[t]) > count: 
            count += 1 
            high = t 
    return high 

但它做同样的事情,并会返回它首先迭代的任何键。它也不是一个非常优雅的解决方案。

最Python 的处理方式是什么?

请您参考如下方法:

问题在于:

return max(a, key=a.get) 

这里的键将返回实际列表并且在Python中列表是按字典顺序比较的,所以不是按长度 (两种比较列表的方式都有话要说,但他们决定按字典顺序排序)。但是,您可以轻松地修改它:

def most_values(a): 
    return max(a, key=<b>lambda x:len(a[x])</b>)

这可能是最Python 的方式,因为它是声明式(您不必考虑如何计算最大值),< em>优雅,可读并且没有副作用。


第二种方法的问题是您应该将count设置为新的len(a[t]),而不是增加它.所以你可以像这样修复它:

def most_values(a): 
    count = <b>-1</b> 
    high = <b>None</b> 
    for <b>key,val</b> in a<b>.items()</b>: 
        if len(<b>val</b>) > count: 
            count<b> = len(val)</b> # semantical error in your code 
            high = <b>key</b> 
    return high