【Python】辞書を参考にしてリストの値を置換したい。
・お題:辞書を参考にしてリストの値を置換したい。もし辞書にないキーがリストに現れたら、据え置きしたい。
・例えば、何が売れたかのリストがあるとする。
Lis=["りんご","ぶどう","みかん","みかん","ばなな"]
・これに対して、品目を値段に置換し、値段のリストを作成したい。
・パターン1:すべての値段が分かっている場合
①とりあえず、品目と値段を対応させた辞書を作成する。
Jisho={"ばなな":50,"みかん":100,"りんご":200,"ぶどう":300}
②Jishoから何等かの品目を引っ張ってくると、値段が返ってくる。
Jisho["りんご"]
を実行すると、200が返ってくる。
③リスト内包表記で記載してみる。
Lis=["りんご","ぶどう","みかん","みかん","ばなな"]
[Jisho[i] for i in Lis]
を実行すると、[200, 300, 100, 100, 50]が返ってくる。
これをsumすれば、いくら払えば良いかわかる。
・パターン2:ばななの値段が分からないとき。
①とりあえず、品目と値段を対応させた辞書を作成する。
Jisho={"みかん":100,"りんご":200,"ぶどう":300}
②パターンAのリスト内包表記を実行すると、エラーが返ってくる。
KeyError: 'ばなな'
ばななの値段がもらった辞書にありません、とのこと。
③辞書中にキーがあるかどうかで分岐し、キーがあった場合は置換、キーがなかった場合は据え置きすることにしたい。
辞書中にキーがあるかどうかは、以下の構文で分かる。
"りんご" in Jisho
を実行すると、Trueが返ってくる。Boolが返ってくるので、そのままif文に入れ込めそうな気がする。
④リスト内包表記で記載してみる。
Lis=["りんご","ぶどう","みかん","みかん","ばなな"]
[Jisho[i] if i in Jisho else i for i in Lis]
を実行すると、[200, 300, 100, 100, 'ばなな']が返ってくる。
ばななの値段が分かれば合計できそう。
もっと根本的に素早くできそうな気がする。
おわり