与此类似 Get Key by value question,但这一次,该值在数组内部。我想到的解决方案是循环字典中的每个项目,然后再次循环值对中的每个项目。但是从外观上看,这是很密集的。这是唯一的方法吗?
# a dictionary that contains ranges. this dictionary might have 1million keys and the range can have many values too
dictionary = {
"x": range(0,10),
"y": range(11,20),
"z": range(21,30)
.
.
.
}
get_dictionary_value = 16
for k,v in dictionary.items():
for item in v:
if get_dictionary_value = item:
print("the key is {}".format(k)) #the output will be "the key is y"
答案 0 :(得分:1)
这是next()
的典型用例:
dictionary = {
"x": range(0,10),
"y": range(11,20),
"z": range(21,30)
}
get_dictionary_value = 16
next(k for k,v in dictionary.items() if get_dictionary_value in v, 'No match')
返回:
y
答案 1 :(得分:1)
要坚持使用您的方法,可以使用@Anton vBR中提到的 in 语句。这将检查数据结构中是否包含某些项目(不仅适用于列表)
d = {
"x": range(0,10),
"y": range(11,20),
"z": range(21,30)
}
query = 16
for k,v in d.items():
if query in v: k
>>> 'y'
将返回与您的查询匹配的键