迭代两个JSON文件以查找匹配项

时间:2013-07-06 18:04:27

标签: python json iteration

我有一个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']

我认为这会迭代用户进行每次审核,但是它会针对第一次审核的用户进行迭代,然后只审阅审核文件,而不会查看用户。

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

1 个答案:

答案 0 :(得分:0)

因为在reviews的第一次迭代之后,users已经用尽了:没有更多要阅读。你永远不会告诉Python从一开始就重新开始。

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