我有下面的字典。每个键都包含一个唯一值列表:
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。