Как сделать SQL-like join lists python?

Есть 2 листа со словарями:
l1 = [
	{'id': 1,'count': 5},
	{'id': 2,'count': 8},
	{'id': 3,'count': 11}
	]
	
l2 = [
	{'id': 1,'name': 'Alex'},
	{'id': 2,'name': 'Jack'},
	{'id': 3,'name': 'Peter'}
	]


Можно ли связать их создав новый лист, аналогично SQL-запросу? :
SELECT * 
FROM l1 
LEFT JOIN l2 ON l1.id = l2.id
;


Сталкивался ли кто-то?
Спасибо.
  • Вопрос задан
  • 738 просмотров
Решения вопроса 2
crazyzubr
@crazyzubr
Python backend-developer
Мой вариант:

l1 = [
  {'id': 1,'count': 5},
  {'id': 2,'count': 8},
  {'id': 3,'count': 11}
  ]
  
l2 = [
  {'id': 1,'name': 'Alex'},
  {'id': 2,'name': 'Jack'},
  {'id': 3,'name': 'Peter'}
  ]
l3 = {x['id']: x['name'] for x in l2}

for x in l1:
    if x['id'] in l3:
        x.update({'name': l3[x['id']]})

print(l1)  # в l1 результат
Ответ написан
@lPolar
data scientist
Честно не понимаю одной вещи - почему для работы с табличными данными программисты на Python предпочитают словари? Есть же отличный контейнер подобного типа - pandas.DataFrame.

import pandas as pd
l1 = [
  {'id': 1,'count': 5},
  {'id': 2,'count': 8},
  {'id': 3,'count': 11}
  ]
  
l2 = [
  {'id': 1,'name': 'Alex'},
  {'id': 2,'name': 'Jack'},
  {'id': 3,'name': 'Peter'}
  ]
l1_df = pd.DataFrame(l1)
l2_df = pd.DataFrame(l2)
res = pd.merge(l1_df,l2_df,left_on='id',right_on='id')
res.set_index('id',inplace=True)
print(res)

В результате получим:
count name
id
1 5 Alex
2 8 Jack
3 11 Peter
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы