如何在不使用for循环的情况下检索包含在值列表字典中的目标值的目标值键



我有下面的字典。每个键都包含一个唯一值列表:

d = {1:[10,11,12],2:[13,14],3:[15,16,17,18],4:[19],5:[20]}

我想按照下面的例子返回指定目标值的键(这确实返回了所需的结果(。

keys = list(d.keys())
values_lst = list(d.values())
target_value = 20
for i,values in enumerate(values_lst):
if target_value in values:
index = i
keys[index]
5

然而,有没有一种方法可以在不部署for循环的情况下(至少显式地(实现这个结果。我所拥有的解决方案并没有让人觉得特别像蟒蛇。

谢谢!

总有一个循环,但你可以用一行代码:

d = {1: [10, 11, 12], 2: [13, 14], 3: [15, 16, 17, 18], 4: [19], 5: [20]}
target_value = 20
key = next(k for k, v in d.items() if target_value in v)
print(key)

打印:

5

一个更Python的解决方案,但仍然具有显式for:

index = -1
for key, values in d.items():
if target_value in values:
index = key
break
print(d[index])

这可能比一行(如另一个答案(更可读,但YMMV。