starwish’s diary

Python辞書リストの結合

Pythonでデータベース処理をしていると、必ず直面するのがテーブルの結合だ。次のようなテーブルを結合して

品名 炭水化物
001 11g
002 12g
003 13g
品名 塩分
002 1g
003 2g
005 3g

次のようにしたい

品名 炭水化物 塩分
002 12g 1g
003 13g 2g

pandasライブラリを使うとすぐにできることは知っているが、これだけのことにライブラリは使いたくない。そして面倒なループは使わず、一行でスッキリ書きたい。

a = [{"product":"001","carbon":"11g"},{"product":"002","carbon":"12g"},{"product":"003","carbon":"13g"}]
b = [{"product":"002","sodium":"1g"},{"product":"003","sodium":"2g"},{"product":"005","sodium":"3g"}]
result = [dict(ae,**be) for ae in a for be in b if ae["product"] == be["product"]]

いわゆるinner joinである。少し工夫すればouter joinもできそうだ。