Помимо прочих замечаний я бы добавил, что
for task in tasks_data_json:
if task['userId'] == user['id']:
заставит код бегать по массиву 10 раз в твоем случае. А вообще это n_юзеров * m_тасков вызовов IF.
Можно сильно сократить, если один раз пройтись по массиву и добавить эти данные в словарь, вида
{user_id: [
[task_done, task_done],
[task_no, task_no]
],
}
И уже 10 раз обратиться по ключу.