如果值中的搜索项(值是列表),获取dict的键

时间:2018-06-11 05:17:01

标签: python list dictionary

我有一个dict如下

{"low":[18,12,9],"medium":[6,3],"high":[2,1],"final":[0]}

我希望在此词典中搜索一个数字并获取其各自的键#'

例如:对于12岁,我需要返回' low'。 slly for 2,return' high'

4 个答案:

答案 0 :(得分:1)

这是next的工作。

my_d = {"low":[18,12,9],"medium":[6,3],"high":[2,1],"final":[0]}

target = 12
res = next((k for k, v in my_d.items() if target in v), 'N\A')
print(res)  # low

请注意,如果您的target值存在于多个键中,则此代码将在 random 1 中返回其中一个。如果可能是这种情况,并且根据您正在处理的问题,可能更明智地获得所有匹配的密钥。为此,请使用:

res = [k for k, v in my_d.items() if target in v]

1 实际上更像是以不受控制的方式

答案 1 :(得分:1)

您可以使用词典理解

dict = {"low":[18,12,9],"medium":[6,3],"high":[2,1],"final":[0]}
key = {k:v for k, v in dict.items() if 12 in v}

输出

In[1]: key.popitem()[0]
Out[1] : 12

答案 2 :(得分:0)

def getKey(number):
    for key, value in d.iteritems():   
        if number in value:
            return key

答案 3 :(得分:0)

dict = {"low":[18,12,9],"medium":[6,3],"high":[2,1],"final":[0]}



def search_key(val):
    for key, value in dict.iteritems():
        for i in value:
            if i == val:
                print "the key is:"+key
                return key

#pass any value for which you want to get the key
search_key(9)