我是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中。
答案 0 :(得分:2)
因此,任务是找到那些与关键字不相交的项目集。这可以使用System.err
和isdisjoint
方法完成:
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
击败了那个。