簡體   English   中英

將列表與Dict比較-如果值與列表匹配,則返回鍵

[英]Comparing List against Dict - return key if value matches list

這是Python 3.6

我需要將列表與字典進行比較的幫助,如果匹配,則需要返回字典鍵。

champ_ids = [0, 36, 85]

champ_dict = {Bob : 0, Carly: 36, Freddy : 85, Megan : 14, Dilbert : 69}

for item in champ_dict.items() and champ_ids:
    print(item)

這樣會打印所有匹配的數字,因此在這種情況下0, 36, 85是完美的。 如果在兩個地方都找到了這些值Bob, Carly, Freddy我該如何返回Bob, Carly, Freddy (這些鍵),而不是返回匹配的值

請注意,問題中的這段代碼沒有按照您的想象做:

for item in champ_dict.items() and champ_ids:

上述檢查item是在字典和郵件列表(這不是如何inand在Python的工作!)。 它只是遍歷champ_ids列表,僅此而已。 嘗試以下方法:

champ_ids  = [0, 36, 85]
champ_dict = {'Bob' : 0, 'Carly': 36, 'Freddy' : 85, 'Megan' : 14, 'Dilbert' : 69}
[k for k, v in champ_dict.items() if v in champ_ids]

上面的代碼將比較字典中的每個 ,如果該存在於列表中,則會將相應的添加到輸出列表中。 例如,這是問題中測試數據的輸出:

['Freddy', 'Bob', 'Carly']

現在,您可以根據需要使用它,如果需要,可以使用print()

首先,您需要在字典中將字符串作為鍵

{"Bob" : 0, "Carly" : 36, "Freddy" : 85, "Megan" : 14, "Dilbert" : 69}

另外為什么不使用id作為鍵而不是名稱,那會更好一些

但是這是代碼:

for k, v in champ_dict.items():
    if v in champ_ids:
        print(k)

暫無
暫無

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

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