ようへいの日々精進XP

よかろうもん

2 つの list 型データ(1 つは dict 型を内包している)でフィルタっぽいことをするメモ

参考

stackoverflow.com

有難う、Stack Overflow 様様。

やりたいこと

以下のような sake_list という dict 型のデータを内包した list 型データがあるとする。

sake_list=[
    {'銘柄': '八海山', '酸度': '1.0', '日本酒度': '+4.0'},
    {'銘柄': '獺祭', '酸度': '1.1', '酒度': '+4.0'},
    {'銘柄': '鍋島', '酸度': '未公表', '酒度': '未公表'},
    {'銘柄': '久保田萬寿', '酸度': '1.2', '酒度': '+2.0'}
]

このデータを drank という list 型データと比較して、drank に含まれている銘柄の dict 型データだけフィルタして取り出したい。

drank=['八海山', '獺祭']

こんな感じで

# -*- coding: utf-8 -*-
from prettyprint import pp

drank=['八海山', '獺祭']
sake_list=[
    {'銘柄': '八海山', '酸度': '1.0', '日本酒度': '+4.0'},
    {'銘柄': '獺祭', '酸度': '1.1', '酒度': '+4.0'},
    {'銘柄': '鍋島', '酸度': '未公表', '酒度': '未公表'},
    {'銘柄': '久保田萬寿', '酸度': '1.2', '酒度': '+2.0'}
]

sake = list(filter(lambda data: data['銘柄'] in drank, sake_list))
for drink in sake:
    # print str(drink).decode("string-escape")
    pp (drink)

事前に prettyprint モジュールをインストールしておきましょう。

pip install prettyprint

今宵も一献

# 試した環境
$ python -V
Python 2.7.12

$ python sake.py
{
    "日本酒度": "+4.0",
    "酸度": "1.0",
    "銘柄": "八海山"
}
{
    "酒度": "+4.0",
    "酸度": "1.1",
    "銘柄": "獺祭"
}

いけた。

飲み過ぎに

注意しましょう。