事務屋さんの備忘録

主にプログラミングのことを書いていきます。メモというか備忘録的な感じで。プログラミングといっても、私はプロのエンジニアでも本職のプログラマーでもありません。単なる事務職をやってるサラリーマンで、空いた時間にちょこちょこっとプログラミングしてる程度です。よってこのブログに記載したことが誤っていたり、もっとよい方法がある場合もあると思います。その場合には、ご指摘いただけると嬉しいです。また、このブログを読んで役に立った、なんて方がいらっしゃったら幸いですね。

Python 基礎その6 辞書 dict

メモ。辞書 dict いろいろ。

#dict 辞書
stock={"S":7,"M":12,"L":3}
print(stock) #{'S': 7, 'M': 12, 'L': 3}

metro={
    "G":"銀座線",   #コメント
    "M":"丸の内線", #コメント
    "H":"日比谷線"  #コメント
}
print(metro) #{'G': '銀座線', 'M': '丸の内線', 'H': '日比谷線'}

#要素を数える
stock={"S":7,"M":12,"L":3}
print(len(stock)) #3


#dictで辞書を作る
#タプル(キー、値)のリストから辞書を作る
data=dict([("yellow",3),("blue",6),("green",5)])
print(data) #{'yellow': 3, 'blue': 6, 'green': 5}

#キーのリストと値のリストから辞書を作る
keys=["yellow","blue","green"]
values=[3,6,5]
data=dict(zip(keys,values))
print(data) #{'yellow': 3, 'blue': 6, 'green': 5}

#キーワード引数を利用して辞書を作る
data=dict(yellow=3,blue=6,green=5)
print(data) #{'yellow': 3, 'blue': 6, 'green': 5}

#初期値で辞書を作る  fromkeys()
stock=dict.fromkeys(["S","M","L"],0)
print(stock) #{'S': 0, 'M': 0, 'L': 0}

#文字列をキーとして、初期値を省略する
data=dict.fromkeys("abcd") #1文字ずつ分割されてキーになる
print(data) #{'a': None, 'b': None, 'c': None, 'd': None}


#キーがあれば更新、なければ追加
data={"yellow":3,"blue":6,"green":5}
print(data) #{'yellow': 3, 'blue': 6, 'green': 5}
data["blue"] = 10
data["white"] = 5
print(data) #{'yellow': 3, 'blue': 10, 'green': 5, 'white': 5}

#キーがあればそのまま、なければ追加 setdefault
data={"yellow":3,"blue":6,"green":5}
print(data) #{'yellow': 3, 'blue': 6, 'green': 5}
data.setdefault("blue",10) #blueキーがあるので何もしない
data.setdefault("white",10) #whiteキーはないので追加
print(data) #{'yellow': 3, 'blue': 6, 'green': 5, 'white': 10}


#空の辞書を作る
d1={}
print(d1) #{}
d2=dict()
print(d2) #{}

#空の辞書に要素を追加
number={}
number["one"]=1
number["two"]=2
number["three"]=3
number["four"]=4
print(number) #{'one': 1, 'two': 2, 'three': 3, 'four': 4}

#他の辞書で更新する
data={"a":10,"b":20,"c":30} #元の辞書
newdata={"a":15,"d":99}     #更新用の辞書
data.update(newdata)
print(data) #{'a': 15, 'b': 20, 'c': 30, 'd': 99}

#指定のキーの要素を削除する
fruit={"apple":7,"orange":5,"mango":3}
del fruit["mango"]
print(fruit) #{'apple': 7, 'orange': 5}

#辞書を複製する
data={"a":100,"b":200,"c":300} #元の辞書
data_b=data #代入する
data_b["c"]=0 #値を変更する
print(data_b) #{'a': 100, 'b': 200, 'c': 0}
print(data) #{'a': 100, 'b': 200, 'c': 0} 代入元のdataも更新されてしまう

#辞書を複製する copyを使う
data={"a":100,"b":200,"c":300} #元の辞書
data_b=data.copy()
data_b["c"]=0 #値を変更する
print(data_b) #{'a': 100, 'b': 200, 'c': 0}
print(data) #{'a': 100, 'b': 200, 'c': 300} コピー元のdataは変化していません


#辞書から値を取り出す
members={"東京":21,"大阪":16,"福岡":11}
print(members["東京"]) #21 キーが無かった時はエラーが発生
print(members.get("福岡")) #11   
print(members.get("京都")) #None  getを使うとエラーにならず、Noneを返す

#キーがあるか調べる
print("大阪" in members) #True
print("京都" not in members) #True

#全ての値を順に取り出す
fruit={"apple":7,"orange":5,"mango":3,"peach":6}
for key in fruit:
    value=fruit[key]
    print(f"{key}が{value}個")   
"""
appleが7個
orangeが5個
mangoが3個
peachが6個
"""

#全てのキーをリストに取り出す
fruit={"apple":7,"orange":5,"mango":3,"peach":6}
keys=list(fruit.keys())
print(keys) #['apple', 'orange', 'mango', 'peach']
      
#全てのキーをリストに取り出す 1文字目を大文字に変換したリストを作る
keys=[key.capitalize() for key in fruit.keys()]
print(keys) #['Apple', 'Orange', 'Mango', 'Peach']

#全ての値をリストに取り出す
values=list(fruit.values())
print(values) #[7, 5, 3, 6]

#辞書の値の合計をっ求める
print(sum(values)) #21

#全ての要素を(キー,値)のリストにする キーと値をタプルのリストにする
print(list(fruit.items())) #[('apple', 7), ('orange', 5), ('mango', 3), ('peach', 6)]

#for in を利用
for key,value in fruit.items():
    print(f"{key}が{value}個")
"""
appleが7個
orangeが5個
mangoが3個
peachが6個
"""

#要素を取り出して削除する
print(fruit.pop("apple")) #7
print(fruit) #{'orange': 5, 'mango': 3, 'peach': 6}