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もできそうだ。