Самый эффективный способ объединить два списка словарей по общему ключу в Python? [дубликат]Python

Программы на Python
Ответить
Anonymous
 Самый эффективный способ объединить два списка словарей по общему ключу в Python? [дубликат]

Сообщение Anonymous »

У меня есть два списка словарей Python, и мне нужно объединить их в один список на основе общего ключа (например, id).
Мои данные:
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)
Хотя это работает, мой фактический набор данных содержит более 50 000 элементов, и этот подход с вложенным циклом - $O(n^2)$, что очень медленно.
Мой вопрос:
Есть ли более «Pythonic» или эффективный способ сделать это? Я ищу решение, которое в идеале работает за $O(n)$ время, возможно, с использованием словаря для поиска или определенной функции стандартной библиотеки Python.

Подробнее здесь: https://stackoverflow.com/questions/798 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»