在python中反转字典

Asd*_*dfg 5 python dictionary

我有这本字典

{'jackie chan': ('rush hour', 'rush hour 2'), 
 'crish tucker': ('rush hour', 'rush    hour 2')}
Run Code Online (Sandbox Code Playgroud)

我想要逆字典

{'rush hour': ('jackie chan', 'crish tucker'), 
 'rush hour 2': ('jackie chan', 'crish tucker')}
Run Code Online (Sandbox Code Playgroud)

我已经将函数反转但它看起来不像第二个字典

def invert_actor_dict(actor_dict):
    movie_dict = {}
    for key,value in actor_dict.iteritems():

        for actor in value:
            if actor in movie_dict:
                movie_dict[actor].append(key)
            else:
                movie_dict[actor] = (key)
    return movie_dict
Run Code Online (Sandbox Code Playgroud)

rub*_*bik 5

您可以轻松地执行此操作collections.defaultdict:

def invert_dict(d):
    inverted_dict = collections.defaultdict(set)
    for actor, movies in d.iteritems():
        for movie in movies:
            inverted_dict.add(actor)
    return inverted_dict
Run Code Online (Sandbox Code Playgroud)


Tig*_*gra 0

def invert_actor_dict(actor_dict):
   movie_dict = {}
   for actor,movies in actor_dict.iteritems(): 

       for movie in movies:
           if not movie_dict.has(movie):
               movie_dict[movie]=[]
           movie_dict[movie].append(actor)
   return movie_dict
Run Code Online (Sandbox Code Playgroud)