Reclassifying movies by theme
theme_movies_data and newdict are bad variable names, change them to ones easier to read. This will reduce the amount of comments you need in your code.
You can simplify your code if you stop using range and use dict.iteritems more.
You shouldn't need your try. You would know this if you use range less.
You don't need dict.fromkeys(mylist_n).keys() it's just useless.




new_dict = {}
for key, themes in movie_themes.items():
    a = []
    for theme in themes:
        if theme in movie_sub_themes:
            a.append(movie_sub_themes[theme])
    new_dict[key] = a


theme_movies = {}
for key, movie_groups in new_dict.iteritems():
    theme_movies_data[key] = [
        movie
        for movies in movie_groups
        for movie in movies
    ]

print(theme_movies)



You can remove the need for the second loop if you use a.extend.
You can change the creation of a to a comprehension.
You can change the creation of theme_movies to a dictionary comprehension.




theme_movies = {
    key: sum(
        movie_sub_themes.get(theme, [])
        for theme in themes
    )
    for key, themes in movie_themes.iteritems()
}

print(theme_movies)


Alternately if you don't like sum:

theme_movies = {
    key: [
        movie
        for theme in themes
        for movie in movie_sub_themes.get(theme, [])
    ]
    for key, themes in movie_themes.iteritems()
}

print(theme_movies)