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}
。最好包括您尝试过的代码尝试,然后询问有关该代码的具体问题。否则,你似乎还没有试图回答这个问题。很高兴听你这么说!。如果这有帮助,请接受答案。