Как решить этот цикл, чтобы вывести все значения?
Нужно вывести 5,3.33, но выводится только 3? Как вывести оба значения
bucket_data22={1: {'key': 'Security Awareness Overview', 'value': 20, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 155},
2: {'key': 'Security Awareness Overview', 'value': 0, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 159},
3: {'key': 'Security Awareness Overview', 'value': 30, 'start_date': '24/09/2021', 'end_date': '27/09/2021', 'id': 174}}
completed_data={155: 1, 174: 1}
for z in completed_data:
print(z)
for i in bucket_data22:
if (bucket_data22[i]['id']==z):
print((completed_data[z]/bucket_data22[i]['value'])*100)
Теперь это работает:
bucket_data22={1: {'key': 'Security Awareness Overview', 'value': 20, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 155},
2: {'key': 'Security Awareness Overview', 'value': 0, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 159},
3: {'key': 'Security Awareness Overview', 'value': 30, 'start_date': '24/09/2021', 'end_date': '27/09/2021', 'id': 174}}
completed_data={155: 1, 174: 1}
for z in completed_data:
for i in bucket_data22:
if (bucket_data22[i]['id']==z):
print((completed_data[z]/bucket_data22[i]['value'])*100)
z
имеет последнее значение completed_data, таким образом, получается только одно совпадение (id 174).
Вы должны проверить bucket_data22[i]['id'] in completed_data
for i in bucket_data22:
if (bucket_data22[i]['id'] in completed_data):
print((completed_data[z]/bucket_data22[i]['value'])*100)
Выход:
5.0
3.3333333333333335
Получается, что второй цикл начинается только после того, как первый уже завершен.
Поэтому второй цикл всегда получает одно и то же значение 'z', равное 174.
Если вы хотите итерировать все значения 'z', вы должны переместить второй цикл в первый цикл.
bucket_data22={1: {'key': 'Security Awareness Overview', 'value': 20, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 155},
2: {'key': 'Security Awareness Overview', 'value': 0, 'start_date': '13/07/2021', 'end_date': '12/08/2021', 'id': 159},
3: {'key': 'Security Awareness Overview', 'value': 30, 'start_date': '24/09/2021', 'end_date': '27/09/2021', 'id': 174}}
completed_data={155: 1, 174: 1}
for z in completed_data:
for i in bucket_data22:
if (bucket_data22[i]['id']==z):
print((completed_data[z]/bucket_data22[i]['value'])*100)