我需要从dict获取一个键,但相应的值是一个列表,我只有一个值(一个元素)的列表。我已经找到了
mydict = {'george':[(16,16), 17],'amber':19}
print(list(mydict.keys())[list(mydict.values()).index((16,16))])
但这不起作用,因为它产生一个值错误,因为目标值只是列表的一个元素。
如何仅使用列表中的一个元素获取密钥(仅使用(16,16)?
答案 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