从字典中的列表中获取值

时间:2018-03-13 19:40:23

标签: python list dictionary

我需要从dict获取一个键,但相应的值是一个列表,我只有一个值(一个元素)的列表。我已经找到了

mydict = {'george':[(16,16), 17],'amber':19}
print(list(mydict.keys())[list(mydict.values()).index((16,16))])

但这不起作用,因为它产生一个值错误,因为目标值只是列表的一个元素。

如何仅使用列表中的一个元素获取密钥(仅使用(16,16)?

3 个答案:

答案 0 :(得分:1)

如果你需要一个按键值,那么Dictionarys就很棒,反之则不然。您可以随时遍历dicts项目:

mydict = {'george':[(16,16), 17],'amber':19}

for key,val in mydict.items(): # decomposed tuple of key,value
    if isinstance(val,list) and val[0] == (16,16): # check if value a list and 1st elem ok
        print (key) # print key

Doku:dictionarys

答案 1 :(得分:1)

您缺少的部分是如何在列表中查找给定值:它是in运算符。

target = (16, 16)
mydict = {'george':[(16,16), 17],'amber':19}
[k for k, v in mydict.items() if type(v) == list and target in v]

这是编写理解和过滤器的漫长道路,但它使步骤显而易见。

答案 2 :(得分:0)

为什么您只使用列表的一部分? 代码中的小修改:

print(list(mydict.keys())[list(mydict.values()).index([(16, 16), 17])])

按预期打印乔治。 适用于python 3.6.0