将两个词典与列表类型值进行比较

Nic*_*ick 2 python dictionary compare tuples list

我想比较两个词典.我的方法是将它们变成两个单独的元组列表,然后使用set模块.这是一个例子:

dict = {'red':[1,2,3],'blue':[2,3,4],'green':[3,4,5]}

dict1 = {'green':[3,4,5],'yellow':[2,3,4],'red':[5,2,6]}

intersection = set(set(dict.items()) & set(dict1.items()))
Run Code Online (Sandbox Code Playgroud)

显然,这是比较两个元组列表和python不喜欢那样.我得到一个TypeError:'list'是不可用的错误(或类似的措辞).

我希望交集包含[('green',[3,4,5])].有任何想法吗?

Amb*_*ber 6

shared_keyvals = dict( (key, dict1[key])
                       for key in (set(dict1) & set(dict2))
                       if dict1[key] == dict2[key]
                     )
Run Code Online (Sandbox Code Playgroud)

你甚至可以把它变成一个函数:

def shared_keyvals(dict1, dict2):
    return dict( (key, dict1[key])
                 for key in (set(dict1) & set(dict2))
                 if dict1[key] == dict2[key]
               )
Run Code Online (Sandbox Code Playgroud)

显然,如果您不希望以字典形式输出,则可以删除dict()调用并替换为list comprehension bracket([]).