1

我有一个包含 30k 用户的文件和一个包含 200k 评论的文件。每行都是有效的 JSON 结构,但整个文件不是。

对于每条评论,我想找到对应的用户,并记下用户的评论总数,这是用户字典中的一个存储值。

with open('review_file.json') as reviews, open('user_file.json') as users:
    for r in reviews: #r == dict
        review = json.loads(r)
        print "review iteration"
        for s in users:  #s == dict
            print "user iteration"
            user = json.loads(s)
            if user['user_id'] == review['user_id']:
                print review['id']
                print user['user_id']
                print user['num_review']

我认为这会为每个评论迭代用户,但它会为第一次评论迭代用户,然后只迭代评论文件而不查看用户。

我错过了什么吗?我希望它会为每个评论迭代用户文件。有没有更简单的方法来处理这个?我发现任何将文件抽象为辅助类的尝试都会显着减慢搜索速度。

4

1 回答 1

0

因为在第一次迭代之后reviewsusers已经筋疲力尽:没有更多可阅读的内容了。你永远不会告诉 Python 从头开始​​。

您可能希望users.seek(0)在外循环的每次迭代开始时执行此操作。

于 2013-07-06T18:10:10.693 回答