从https://jsonplaceholder.typicode.com/todos的数据中,我想按用户统计“已完成”的项目。你知道吗
目前,我的方法是首先收集现有的用户Id键,然后为数据集中的每个元素检查其是否属于当前用户,并附加到该用户的项列表中。你知道吗
users_items = {}
import json
from urllib import request
# Data from
uri = "https://jsonplaceholder.typicode.com/todos"
response = request.urlopen(uri).read()
data = json.loads(response)
def get_user_ids(items):
for item in items:
users_items[item['userId']] = None
def get_user_items():
for uid in users_items:
items = []
for item in data:
if(item['userId'] == uid):
items.append(item['completed'])
users_items[uid] = items
done_items_by_user = {}
def count_completed_by_user():
for user in users_items:
done_items_by_user[user] = sum(users_items[user])
get_user_ids(data)
get_user_items()
我尤其不喜欢双循环和在get_users_ids
中用空列表初始化字典值。你知道吗
只需使用defaultdict对象:
输出(其中key是“user ID”,value是一些“Done”项):
流行的
pandas
库允许您在一行中执行此操作:如果你在问没有
pandas
你能做些什么,你可以通过听写理解来避免显式循环:可以使用dict方法
get()
插入/更新用户标识:相关问题 更多 >
编程相关推荐