Python dict实现Java HigherKey()函数来查找值?

时间:2018-06-27 07:35:08

标签: python python-3.x pandas dictionary

这是字典level = {1.4:'A',2.5:'B',3.5:'C'}

我想将score = 1.6level匹配并返回'B'的值;它返回大于score但最小的键的值。

在Java中,我通过以下功能来做到这一点:

level.get(level.higherKey(score));

但是在python中做什么?我想python可以做到优雅。

4 个答案:

答案 0 :(得分:2)

我认为您需要这个:

level = {1.4: 'A', 2.5: 'B', 3.5: 'C'}
score = 1.6

print(level.get(min((k for k in level if score <= k), default=None)))    
# B

在生成器表达式上使用min可确保它返回大于score的最小键。

答案 1 :(得分:1)

try:
    print(level[min(filter(lambda x: x > score, level))])
except ValueError:
    print("No match")

这会打印出大于score的最小键值。如果没有,则显示“不匹配”。

答案 2 :(得分:0)

print(level[min([i for i in level.keys() if i > score])])

答案 3 :(得分:0)

如何使用有序字典返回下一个更大的值?

def higherKey(level, value):
    for elem in collections.OrderedDict(sorted(level.items(), key=lambda t: t)):
        if elem > value:
            return level[elem]