辞書型 Python 使い方

Python学習【365日チャレンジ!】25日目のマスターU(@Udemy11)です。

25というと、100の1/4、5の5倍なので、なんとなくキリのいい数字のような気がするのはわたしだけでしょうか?

40歳を超えてくると、細胞は死滅していく一方なので、若年性痴呆症予防のため!?何気ないことにもなにか関係性があるんじゃないかと考えながら毎日を過ごしています。

毎日Pythonの学習に取り組んでいるとはいえ、1日に学習する内容が非常に少ないので、あまり進んでいるような気がしません。

もっと1日に学習する内容を増やして、次々進んだほうがいいのかもしれませんが、基本中の基本からじっくりと時間をかけて学んだほうがスキルとして定着するような気がしています。

それでは、今日もPython学習をはじめたいと思います。

昨日の復習

昨日は、辞書型のコピーについて学習しました。

>>> a = {'x': 10, 'y': 20}
>>> b = a.copy()
>>> b['x'] = 100
>>> b
{'x': 100, 'y': 20}
>>> a
{'x': 10, 'y': 20}

2行目で【b = a】としてしまうと、参照渡しになるので、3行目で変数bのkeyがxのvalueに100を代入していますが、結果は参照している変数aのkeyがxのvalueに100を入れることになります。

元の変数aを変更せずに、新しい変数bを変更するには、copy()を使って、値渡しをする必要がありました。

また、リスト型のメソッドであるpop()と同じ働きをするメソッドでpopitem()についても学びました。

>>> a = {'x': 10, 'y': 20, 'z': 30}
>>> a.popitem()
{'z' = 30}
>>> a.pop('x')
10
>>> a
{'y': 20}

リスト型では()に何も指定しなくても最後の値が取り除かれましたが、辞書型の場合、popで取り除く場合はkeyを指定する必要がありました。

一方で、popitem()を使えば、keyを指定しなくても最後のkeyとvalueを取り除くことができます。

他にもたくさんのメソッドがありますが、すべて覚えられないので、helpを活用して、その時々で必要なメソッドをしっかりと憶えるようにしましょう。

商品名と価格を取り出す

辞書型の特徴は、2つの値が対になって保存されているというところです。

keyとvalueが対になっているので、keyの値を指定すれば、すぐにvalueが返されるので、商品名と価格を紐付けてデータを抽出する場合などに使われます。

apple = {
          'MacBookPro': 1500,
          'MacBookAir': 1000,
          'iMac': 3000,
          'iPhoneXS': 1200,
}
 
print(apple['iMac'])

出力結果

3000

appleという辞書型変数にMacBookProなどの商品と価格を入れて、商品名を指定すれば、価格が表示されるというような場合です。

ちなみに、文字列の定義の際、バックスラッシュの使い方で学習しましたが、種類に限らず、カッコでくくっている場合は、改行を無視してくれるので、長くなるときはコードが見やすいように対のアイテムを整列しています。

酒井さんの講座では、最後の綴じカッコは、1行改行して綴じていたのですが、改行してもしなくてもかまいません。

また、最後の値のあとに付けるカンマがなくてもエラーは起こりませんが、コードがわかりやすいように統一した表記にしたほうがいいみたいです。

リストでもできる?

リストを使っても同じような抽出ができるみたいです。

apple = [
       ['MacBookPro', 1500],
       ['MacBookAir', 1000],
       ['iMac', 3000],
       ['iPhoneXS', 1200],
]

このようなネストされたリストを作ってiMacの価格を抽出するのですが、

変数appleの中のネストされたリストの中からiMacという値が含まれるリストのindex値を見つけてそのリストのindexが1の位置の値を抽出する

というコードを書かなければいけなくなるみたいで、下記サイトなどを参考に考えたのですが、わたしの今のスキルではちょっと難しく、もう少しレベルアップしてから挑戦してみようということにしました。

情報は開かれている

今回、辞書型でできることをリストでもできるのですが、検索に時間がかかるので、1組になったデータの値を抽出する場合は辞書型を使うのがベストです。

知識やスキルとして身につけておくとどこかで役立つかもしれないので、知っておいて損はありませんが、できなくても困ることはないということです。

10年、20年前と違って、ほとんどの情報は見つけようと思えば見つけられます。
その情報を見つける方法がわからなかったり、たどり着くまでの手間をめんどくさいと考えるでのはなく、諦めずに求めていれば、解決法にたどり着けます。

情報の海に繰り出さないことには、答えを見つけられません。

情報の海で溺れてしまうか、挑戦し続けて航海術を身につけられるかはあなた次第です。

ネットの世界は、誰にでも開かれているんですから。

なんだかあやしい宗教みたいになってしまいましたが、明日も元気にPython学習を継続しますよ!

それでは、Good Python!