简体   繁体   English

如何在时间方面优化此 python 代码

[英]How can I optimise in term of time this python code

I write this code but I find it very slow and I don't know how to really improve it in term of time.我写了这段代码,但我发现它很慢,我不知道如何在时间方面真正改进它。 data is a json object with approximately 70 000 key in it. data是一个 json 对象,其中包含大约 70 000 个键。 I think the slowest part is the actors part because i'm iterating on a list (which contain at most 3 elements).我认为最慢的部分是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

How does this work for you这对你有什么作用

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM