- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
来自 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对象:
import json
from urllib import request
from collections import defaultdict
# Data from
uri = "https://jsonplaceholder.typicode.com/todos"
response = request.urlopen(uri).read()
data = json.loads(response)
def count_user_completed_items(data):
result = defaultdict(int)
for item in data:
if item['completed']: result[item['userId']] += 1
return dict(result)
print(count_user_completed_items(data))
输出(其中键是“用户 ID”,值是一些“完成”项):
{1: 11, 2: 8, 3: 7, 4: 6, 5: 12, 6: 6, 7: 9, 8: 11, 9: 8, 10: 12}
关于python - 如何避免 Python 中的双循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56459607/
我有一个关于在 R 中执行双循环的明显问题,但无法在此网站上找到答案。我正在使用以下代码: mu <- c(0, .2, .5, .8) sco <- matrix(nrow = 50, ncol =
是否有可能循环 2 列表与另一个大小最小的列表“重新循环”? 例子: list = [1,2,3,4,5,6,7,8,10] list2 = [a,b] newlist = [] for numb
我有一个这样的对象 objs: - { key1: value1, key2: [value2, value3] } - { key1: value4, key2: [value5,
我正在处理一个目录,其中一些列表具有与其关联的图像,而其他列表则没有。我想知道如何在循环中编写循环来获取结果。 例如,用户选择他们想要结果的州,查询将转到数据库,请求该州的所有列表。 Sorry, t
我在 2 个 for 循环中有复选框。我想强制它们表现得像单选按钮一样。每个 Q(第一个循环)只能选择一个选项。我有一个和平的代码,但它不起作用。如何更改? script type="text/jav
我遵循了 this post 的答案,但是,这似乎对我不起作用。我有一个第一个二维数组,我想在每个外循环之间超时,而不是在外循环中超时。 这是 this Fiddle 的片段显示我尝试过的三种方法之一
我使用最小编辑距离算法来查找相似的字符串。 我的代码主题是在输入数据中找到爱好最接近的夫妇。 Hobby type A B C D E F G H I J K L M N O P Q R S T U
我正在尝试优化用于计算两个方阵元素的乘积的双和的代码。假设我们有两个大小为 n、W 和 V 的方阵。需要计算的对象是一个带有元素的向量B 简单来说:计算两个不同矩阵中两个不同行的逐元素乘积并求它们的和
我是一名优秀的程序员,十分优秀!