簡體   English   中英

從字典列表中按值獲取密鑰

[英]Get a key by value from a list in a dict

我需要從字典中獲取鍵,但是對應的值是一個列表,並且列表中只有一個值(一個元素)。 我已經找到

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

但這不起作用,因為目標值只是列表中的一個元素,因此會產生值錯誤。

如何僅使用列表中的一個元素(僅使用(16,16)獲得密鑰?

如果您需要按鍵值,那么字典就很棒,反之則不然。 您總是可以遍歷字典項:

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: 字典

您缺少的部分是如何在列表中查找給定值:它是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]

這是編寫理解和過濾器的很長的路,但是它使步驟顯而易見。

為什么只使用列表的一部分? 在代碼中進行小的修改:

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

按預期方式打印喬治。 適用於python 3.6.0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM