我使用pymongo中的管道来查询json文件。
我有一个名单,“六个城市”,包含了6个‘城市’的‘最高数量’的书店,也就是最少的书店。(包含6个pymongo实例)
{'_id': 'city1', 'count': 84}
{'_id': 'city2', 'count': 65}
{'_id': 'city3', 'count': 61}
{'_id': 'city4', 'count': 59}
{'_id': 'city5', 'count': 84}
{'_id': 'city6', 'count': 64}我有第二个列表,“旅行城市”,在json文件中的每一个‘城市’( 20+)中都有旅行书店的数量。(包含20+pymongo实例) {'_id':'city1','count':42}...etc
请注意:此列表中包含的城市不在第一个列表中。
我想用这些清单来计算6个最高城市的旅游书店的比率。
公用键将是“城市”,这将出现在这两个列表的文件中,即清单2: city1: 42除以列表1: city1: 84 = 0.5
我不知道如何在pymongo中这样做,因为信息在列表中的mongo文档中。
我认为某种嵌套循环会起作用:
dict={}
for i in sixcities: #loop through the first list
dict[i["_id"]]=i["count"]
for i in travelcities: #loop through second list
dict[i["_id"]]=i["count"]/(dict[i["_id"]]) #ratio但我得到的结果如下: KeyError:“city15”这个城市没有出现在第一个名单上,它是6个拥有最多书店的城市之一,但在第二个城市中却出现了一家旅游书店。
任何和所有的帮助都是感激的。
发布于 2018-04-18 01:11:58
代码中的一个问题是,在外部循环和内部循环中都使用相同的变量“i”。
考虑这个代码,对于第一个列表中的每个城市,在第二个列表中搜索它,然后计算比率。
dict={}
for i in sixcities: #loop through the first list
dict[i["_id"]]=i["count"]
for j in travelcities: #loop through second list
if j["_id"] == i["_id"]:
dict[i["_id"]]=j["count"]/(dict[i["_id"]]) #ratio请注意,如果第二个列表中不存在城市,则答案仍然是第一个列表中的城市计数。用你想要的方式处理这个角落的案子。
https://stackoverflow.com/questions/49889258
复制相似问题