![](/img/trans.png)
[英]Python Dictionary using Lists as Values, find other Keys with same values
[英]Find keys in a dictionary of lists using values
我有一個字典,每個鍵包含多個值。 我想使用其中一個值來獲取與該值關聯的所有鍵。 但是,我的代碼以 null 響應運行。
def dict_keys(my_dict, *vals):
for k, v in my_dict.items():
if v == ['vals']:
return key
else:
return 'No keys'
return dict_keys
dict_keys(fruit_dict, '甜瓜', '草莓')
'No keys'
但是我不能在列表中獲取單個值:
for key, value in fruit_dict.items():
print(value)
print(value == 'melon')
output:
['melon', 'berry', 'mango']
False
['orange']
False
['lime']
False
['berry', 'watermelon', 'strawberry']
False
['cherry', 'melon']
False
用第二個循環迭代這些值!
for key, fruits in fruit_dict.items():
for fruit in fruits:
if fruit == test_fruit:
...
或檢查會員資格
for key, fruits in fruit_dict.items():
if test_fruit in fruits:
...
v == [...]
不是您檢查v
是否是列表中的成員之一的方式。vals
已經是一個列表。 您不需要將其括在方括號中。 無論如何,您的['vals']
是一個包含單個字符串的列表——字符串'vals'
return
鍵列表。None
。 在這種情況下,因為我們要返回一個列表,所以最好只返回一個空列表。for k, v in my_dict.items()
中, k, v
並沒有真正告訴您這些變量是什么,但是如果您將它們重命名為有意義的名稱,就更容易理解您的代碼的含義正在做。def dict_keys(my_dict, search_fruit):
keys = [] # Initialize an empty list
for person, liked_fruits in my_dict.items():
if search_fruit in liked_fruits: # Check if the list contains the fruit you're looking for
keys.append(person)
else:
# Do nothing
pass
return keys
現在假設你有一個這樣的字典,它告訴你五個人最喜歡的水果,你想找到喜歡甜瓜的人:
fruit_dict = {
"A": ['melon', 'berry', 'mango'],
"B": ['orange'],
"C": ['lime'],
"D": ['berry', 'watermelon', 'strawberry'],
"E": ['cherry', 'melon']
}
你會這樣做:
dict_keys(fruit_dict, "melon")
這會給你一個包含兩個鍵的列表:
['A', 'E']
您可以使用set.intersection
並為自己保存一個嵌套循環:
def keys_with_vals(my_dict, *vals):
check_vals = set(vals).intersection
return [k for k, v in my_dict.items() if check_vals(v)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.