如何优化这个python代码的时间

时间:2016-03-31 18:59:44

标签: python json time

我写这段代码,但我觉得它很慢,我不知道如何真正改善它的时间。 data是一个json对象,其中包含大约70 000个键。我认为最慢的部分是actors部分,因为我在列表上迭代(最多包含3个元素)。

genres_number = {}
actors_number = {}    
for movie in data:
    for genre in data[movie]["genres"]:
        if data[movie]["actors"] != None:
            for actor in data[movie]["actors"]:
                if actor not in actors_number.keys():
                    actors_number[actor] = 1
                else:
                    actors_number[actor] = actors_number[actor] + 1
        if genre not in genres_number.keys():
            genres_number[genre] = 1
        else:
            genres_number[genre] = genres_number[genre] + 1
res = []
res.append(genres_number)
res.append(actors_number)
return res

1 个答案:

答案 0 :(得分:1)

这对你有用吗<​​/ p>

from collections import defaultdict

def get_stats(data):
    genres_number = defaultdict(int)
    actors_number = defaultdict(int)

    for movie in data:

        actors = movie.get('actors')
        if actors:
            for actor in actors:
                actors_number[actor] += 1

        genres = movie.get('genres')
        for genre in genres:
            genres_number[actor] += 1

    res = []
    res.append(dict(genres_number))
    res.append(dict(actors_number))
    return res