Мои данные:
Python
Код: Выделить всё
list_a = [
{'id': 1, 'name': 'Alice'},
{'id': 2, 'name': 'Bob'},
{'id': 3, 'name': 'Charlie'}
]
list_b = [
{'id': 1, 'score': 90},
{'id': 2, 'score': 85},
{'id': 3, 'score': 92}
]
Я хочу объединить их в один список, где каждый словарь содержит все ключи:
Python
Код: Выделить всё
[
{'id': 1, 'name': 'Alice', 'score': 90},
{'id': 2, 'name': 'Bob', 'score': 85},
{'id': 3, 'name': 'Charlie', 'score': 92}
]
В настоящее время я использую вложенный цикл for для поиска совпадающих идентификаторов:
Python
Код: Выделить всё
result = []
for a in list_a:
for b in list_b:
if a['id'] == b['id']:
combined = a.copy()
combined.update(b)
result.append(combined)
Мой вопрос:
Есть ли более «Pythonic» или эффективный способ сделать это? Я ищу решение, которое в идеале работает за $O(n)$ время, возможно, с использованием словаря для поиска или определенной функции стандартной библиотеки Python.
Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-python
Мобильная версия