Как отмечается в комментарии @ mad_, ids
- это список диктов, а не диктат. Это делает поиск одного из ключей очень неэффективным, так как вам нужно будет go просмотреть весь список, чтобы найти его.
Итак, первым шагом является объединение всех этих маленьких диктовок в один большой.
Затем мы можем эффективно построить список с ожидаемым результатом:
ids = [{'1020': 'ID-2522'}, {'1030': 'ID-2523'}, {'1040': 'ID-2524'}]
data = [{'sf_id': '1020', 'TotalPrice': '504'},
{'sf_id': '1030', 'TotalPrice': '400'},
{'sf_id': '1040', 'TotalPrice': '500'}]
ids_dict = {k:v for dct in ids for k, v in dct.items()}
opportunity = []
for my_dict in data:
new_id = my_dict["sf_id"]
opportunity.append(ids_dict[new_id])
print(opportunity)
# ['ID-2522', 'ID-2523', 'ID-2524']
(обратите внимание, что вам не нужно enumerate
, если вы не используете индекс)
Или, короче, с пониманием списка:
opportunity = [ids_dict[my_dict["sf_id"]] for my_dict in data]
print(opportunity)
# ['ID-2522', 'ID-2523', 'ID-2524']