根据其他列表将字典中的键放到新列表中

时间:2016-11-17 22:22:23

标签: python

我是python的初学者,想知道这是否可行?

businessideas = {
"DeliDelivery": ['bread'],
"Ikea": ['sofa','table'],
'Volvo': ['car','window'],
'saab' : ['window']
}




carkeywords = ['car', 'engine']
furniturekeywords = ['sofa', 'bookshell']
bakerykeywords = ['bread', 'flour', 'cookies']

carkeywords_competitors = []
furniturekeywords_competitors = []
bakerykeywords_competitors = []

我想创建一个函数,如果它们具有共同的值,则将每个字典键放在竞争者列表中。所以举一个例子,宜家的钥匙有沙发和桌子。然后函数应该看到值沙发与furniturekeywords元素重复。然后功能应该将关键Ikea放在列表furniturekeywords_competitors中。如果它与carkeywords具有相同的值,则该函数将把密钥放在carkeywords_competitors中。

1 个答案:

答案 0 :(得分:2)

因此,任务是找到那些与关键字不相交的项目集。这可以使用System.errisdisjoint方法完成:

set

结果:

businessideas = {
"DeliDelivery": ['bread'],
"Ikea": ['sofa','table'],
'Volvo': ['car','window'],
'saab' : ['window']
}

carkeywords = ['car', 'engine']

def competitors(ideas, keywords):
   keywords = set(keywords)
   return [k for k,v in ideas.items() 
           if not keywords.isdisjoint(v)]

carkeywords_competitors = competitors(businessideas, carkeywords)

请注意,如果列表的元素不可清除,但确实为它们定义了相等,那么>>> carkeywords_competitors ['Volvo'] 就是我要使用的。 (如果他们没有平等,那么任务将是不可能的,唯一的选择是any(i in kwds for i in v))但是它们是可以清除的,因为它们是字符串。所以False击败了那个。