У меня есть словарь Python, например {'user_id': 'user_checkpoint'}
checkpoints_dict= {"id_11": "checkpoint_a", "id_13": "checkpoint_a", "id_15":
"checkpoint_b", "id_22": "checkpoint_c", "id_99": "checkpoint_c",
"id_4": "checkpoint_d", "id_2": None}
>>> checkpoints_dict
>>> {'id_11': 'checkpoint_a',
'id_13': 'checkpoint_a',
'id_15': 'checkpoint_b',
'id_2': None,
'id_22': 'checkpoint_c',
'id_4': 'checkpoint_d',
'id_99': 'checkpoint_c'}
Примечание: у пользователя может не быть контрольной точки, такой как id_2
!
У меня есть второй словарь вроде {'user_id': time}
:
user_time = {"id_11": 40, "id_13": 95, "id_15": 150, "id_22": 12,
"id_4": 154, "id_99": 111 , "id_2": 24, "id_3": 43, "id_5": 65, "id_6": 45}
Примечание: Каждый user_id из checkpoints_dict
можно найти в user_time
Как получить добавленное user_time для каждой контрольной точки в checkpoints_dict
? Основываясь на примере, я бы ожидал sth. как это:
result_checkpoint_time = {"checkpoint_a": sum([40, 95]),
"checkpoint_b": sum([150]),
"checkpoint_c": sum([12, 111]),
"checkpoint_d": sum([154])}
Поскольку у меня нет умной идеи, чтобы подойти к этому, я не могу показать свои решения этой проблемы!
Вам просто нужно использовать user_time
dict для идентификатора, который вы получаете, перебирая контрольную точку:
checkpoints_dict = {
"id_11": "checkpoint_a",
"id_13": "checkpoint_a",
"id_15": "checkpoint_b",
"id_22": "checkpoint_c",
"id_99": "checkpoint_c",
"id_4": "checkpoint_d",
"id_2": None,
}
user_time = {
"id_11": 40,
"id_13": 95,
"id_15": 150,
"id_22": 12,
"id_4": 154,
"id_99": 111,
"id_2": 24,
"id_3": 43,
"id_5": 65,
"id_6": 45,
}
Так:
result = {}
for id_, checkpoint in checkpoints_dict.items():
if checkpoint is not None:
result[checkpoint] = result.get(checkpoint, 0) + user_time[id_]