4

给定一个字典和一个像这样的变量:

dic = {0 : 'some', 10 : 'values', 20 : 'whatever'}
var = 14

我想从键最大但小于或等于变量的字典中获取值。我不知道这是否清楚,但在这种情况下,我正在寻找10.

我想出了这个功能,但我想知道是否有更简单的方法来做到这一点,因为我对 python 还很陌生。

def get_greatest_key(dic, var):
    # if the key exists no need to search
    if var in dic:
        return dic[var]
    else:
        # create a list with all the keys sorted in reverse 
        l = sorted(dic, key=dic.get)
        i = 0
        while i < len(l):
            # parse the list
            if l[i] <= var:
                return dic[l[i]]
            i += 1
        # by default we return the last element in the dictionary
        return dic[l[len(l) - 1]]
4

1 回答 1

9

如果您想要小于或等于 的最大键var,则可以将生成器表达式传递给max函数:

>>> dic = {0 : 'some', 10 : 'values', 20 : 'whatever'}
>>> var = 14
>>> max(k for k in dic if k <= var)
10

有对应的值

>>> dic[max(k for k in dic if k <= var)]
'values'

ValueError如果您认为合适的参数max为空,您可以决定如何处理throw 。

于 2013-04-14T17:37:39.393 回答