获取数组内的字典键值

时间:2019-06-12 10:29:36

标签: python dictionary

与此类似 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"

2 个答案:

答案 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'

将返回与您的查询匹配的键