Skip to main content
 首页 » 编程设计

Python之查找值大于零的最高字典键

2025年05月04日23落叶

我有一本字典

{0: 12, 1: 1, 2: 13, 3: 7, 4: 0} 

我想找到值大于 0 的最高字典键。

在这种情况下,答案是 3。

执行此操作的最佳方法是什么?

请您参考如下方法:

使用 genexpr 过滤掉“坏”值,并使用 max 保留剩下的最高值:

# On Py2, use .iteritems() instead of .items() 
max(k for k, v in mydict.items() if v > 0) 

或者,如果在没有引发异常的情况下没有符合条件的键,您需要一个默认值:

# Py3 max has default, which makes this super-easy: 
max((k for k, v in mydict.items() if v > 0), default=SOMEVALUEGOESHERE) 
 
# Py2 doesn't have default; workaround is to catch exception and use a default (EAFP): 
try: 
    mymax = max(k for k, v in mydict.iteritems() if v > 0) 
except ValueError: 
    mymax = SOMEVALUEGOESHERE 
 
# Or if you can't do that for some reason, make a listcomp instead of genexpr 
# and check for at least one surviving key before calling max (LBYL) 
goodkeys = [k for k, v in mydict.iteritems() if v > 0] 
mymax = max(goodkeys) if goodkeys else SOMEVALUEGOESHERE