Python 使用Dict中相同的值获取最小键

Python 使用Dict中相同的值获取最小键,python,Python,我有一个口述 x={1:1,2:2,3:8,4:8,5:2,6:7,7:4,8:9,10:2} 我想定义一个函数f(I),它返回值为I的键 既然多个键具有相同的值,那么应该返回min键 i=8 前- i=2 然后在x中,2,5和10具有值i=2 因此,必须返回2 i=8 3和4的值为8,则必须返回3 i=8 不使用循环是否可以执行此操作,因为此函数作为基本函数,将从其他函数多次调用(大约10^18)?我想写这个没有循环的函数。有可能吗?最简单的方法是 def(字典,目标值): retur

我有一个口述

x={1:1,2:2,3:8,4:8,5:2,6:7,7:4,8:9,10:2}
我想定义一个函数
f(I)
,它返回值为
I
的键

既然多个键具有相同的值,那么应该返回min键

i=8
前-
i=2
然后在x中,2,5和10具有值
i=2

因此,必须返回2

i=8
3和4的值为8,则必须返回3

i=8
不使用循环是否可以执行此操作,因为此函数作为基本函数,将从其他函数多次调用(大约10^18)?我想写这个没有循环的函数。有可能吗?

最简单的方法是

def(字典,目标值):
return min(过滤器(lambda k:dictionary[k]==目标值,dictionary.keys())

不直接使用循环的一种方法是使用
filter()
函数和
min()

注意:虽然我使用
global
可以在
f()
中使用
x
,但最好在
f()
中再添加一个参数以避免全局变量:

def f(x, i):
    return min(filter(lambda k: x[k] == i, x))
使用您在问题中提供的示例进行测试:

print(f(2))
print(f(8))
将返回:

2
3

在您的情况下,这肯定会很好。请尝试以下解决方案

def findMinIndexElement(to_find):
    values = list(x.values())
    keys = list(x.keys())
    try:
        return keys[values.index(to_find)]
    except:
        return 'Not Found'
        

x={1:1,2:2,3:8,4:8,5:2,6:7,7:4,8:9,10:2, 11:7}
to_find = int(input())
print(findMinIndexElement(to_find))

利用
min
和dict压缩

def find(i):
    return min({k:v for k,v in x.items() if v == i}.keys())
print(find(2))
输出

2

我不认为这正是OP想要的。尝试在此处找到值为
8
min
键:
x={1:1,2:2,15:8,4:8,16:8,5:2,6:7,7:4,8:9,10:2}
。最好包括您尝试过的代码尝试,然后询问有关该代码的具体问题。否则,你似乎还没有试图回答这个问题。很高兴听你这么说!。如果这有帮助,请接受答案。