我试着数一下“精英”键,用“精英”键输入的次数并不是空的。然后是“精英”用户的总数。
下面是示例数据集,它应该有"1“,因为在3项中有"1”项是精英,而不是空列表。
{"yelping_since": "2013-07", "votes": {"funny": 1, "useful": 2, "cool": 2}, "review_count": 5, "name": "Kikki", "user_id": "KW35l9DVkPNJCgApafhE8w", "friends": [], "fans": 0, "average_stars": 3.67, "type": "user", "compliments": {}, "elite": [2012]}
{"yelping_since": "2013-10", "votes": {"funny": 0, "useful": 0, "cool": 0}, "review_count": 1, "name": "Cindy", "user_id": "OdajpYB_nAJXNLSNbyMvxg", "friends": [], "fans": 0, "average_stars": 5.0, "type": "user", "compliments": {}, "elite": []}
{"yelping_since": "2013-10", "votes": {"funny": 0, "useful": 0, "cool": 0}, "review_count": 3, "name": "Lawrence", "user_id": "z-0l9wtrlGBSyMlj4BP9Lw", "friends": [], "fans": 0, "average_stars": 3.5, "type": "user", "compliments": {}, "elite": []}下面是我尝试过的代码
import json
def count_number_of_elite():
with open("data/yelp_academic_dataset_user.txt", "r") as input_file:
for line in input_file:
if json.loads(line)["elite"]:
number_of_elite_user += 1
print (number_of_elite_user)发布于 2016-10-24 12:22:58
由于您的输入数据是json格式的,所以我将使用
import json
file = open("data/yelp_academic_dataset_checkin", "r")
for line in file:
if json.loads(line)["elite"] != []:
number_of_elite_user += 1
return number_of_elite_user而且,返回语句可能不应该在for-循环中,因为否则它总是返回1。
除了@UnholySheep在评论中建议的改进之外,代码的正确方法是:
import json
def count_lines():
number_of_elite_user = 0
with open("data/yelp_academic_dataset_checkin", "r") as input_file:
for line in input_file:
if json.loads(line)["elite"]:
number_of_elite_user += 1
return number_of_elite_user
print(count_lines())发布于 2016-10-24 12:33:10
下面的代码可以实现您想要的结果:
首先,确保导入json:
import json并将功能的主体更改为:
file = open("data/yelp_academic_dataset_checkin", "r")
number_of_elite_user = 0
for line in file:
user = json.loads(line)
if (len(user['elite'])>0):
number_of_elite_user += 1
return number_of_elite_userhttps://stackoverflow.com/questions/40218233
复制相似问题