![](/img/trans.png)
[英]plotting all keys of a dictionary which contains list as values (python)
[英]How to find all keys within a dictionary which contains only ALL values from a list
我是python的新手。 我目前正在研究一種腳本,該腳本可以過濾求職者所使用的編程語言。 我有一本字典,其中包含每個候選項(鍵)和她的語言(值)。 我只想在字典中找到鍵,這些鍵的值包含列表中包含的所有項。 例如:
list1 = ['php', 'net']
dict = {
'lara': ['net', 'php', 'python'],
'john': ['php', 'c++'],
'ian' : ['php','python']}
使用此示例,我想獲得的只是鍵“ lara”,這是唯一包含list1中列出的所有值的鍵。 我一直在瘋狂地尋找解決此問題的方法,但到目前為止,我什么都沒找到,也沒有辦法使它對我自己有用。
任何幫助都將受到歡迎
使用列表理解和all
list1 = ['php', 'net']
d = {'lara': ['net', 'php', 'python'], 'john': ['php', 'c++'], 'ian': ['php','python']}
print([k for k,v in d.items() if all(i in v for i in list1)])
輸出:
['lara']
擴展版本。
res = []
for k,v in d.items():
if all(i in v for i in list1):
res.append(k)
使用列表或字典理解來過濾字典中的元素(以下將dict
重命名為dikt
以避免與dict
類沖突)。 在all
函數返回True
,如果迭代的所有元素都是True
。
list1 = ['php', 'net']
dikt = {'lara': ['net', 'php', 'python'], 'john': ['php', 'c++'], 'ian': ['php','python']}
# Matching keys as a list:
[k for k,v in dikt.items() if all(x in v for x in list1)]
# ['lara']
# Matching entries returned as a dict:
{k:v for k,v in dikt.items() if all(x in v for x in list1)}
# {'lara': ['net', 'php', 'python']}
使用set.isubset
方法查找給定集合是否為列表的子集
list1=['php', 'net']
dict1={'lara': ['net', 'php', 'python'], 'john': ['php', 'c++'], 'ian': ['php','python']}
set1=set(list1)
{k:v for k,v in dict1.items() if set1.issubset(v)}
# {'lara': ['net', 'php', 'python']}
使用集合而不是列表。
set1 = {'php', 'net'}
dict1 = {'lara': ['net', 'php', 'python'], 'john': ['php', 'c++'], 'ian': ['php','python']}
{k: v for k,v in dict1.items() if set1.issubset(v)}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.