LoginSignup
0
0

More than 3 years have passed since last update.

Paiza Python入門編5: 辞書(ディクショナリ)の基礎

Last updated at Posted at 2020-10-30

PaizaでPython3が完全無料なのでまとめました。

Paiza Python3入門編

01:辞書とは何か学ぼう

lesson.py
まとまったデータをテキスト(キー)で扱う

リスト
list 012に対し

list[0]="モンスター"
list[1]="ドラゴン"
list[2]="魔王"

辞書

dict  ザコ 中ボス ラスボス

dict["ザコ"]="モンスター"
dict["中ボス"]="ドラゴン"
dict["ラスボス"]="魔王"

というようにできる

辞書な基本機能

enemies ザコ 中ボス ラスボス

キーでデータを参照
print(enemies["ザコ"])

キーを変数を求める
level="中ボス"
print(enemies[level])

データの個数
print(len(enemies))

追加更新削除もできる

辞書の使い所
1.DBとやりとりするデータの処理
点数一覧のデータ(縦列)リストで処理
国語の点数

2.APIとやりとりするデータの処理
学生のレコード(横列)辞書(ディクショナリ)で処理
出席番号国語算数英語

02辞書を作る

lesson.py
# リストのおさらい
enemyArray=["スライム","モンスター","ドラゴン"]
print(enemyArray)
print(enemyArray[0])

#辞書の具体例
enemyDictionary= {"ザコ":"スライム","中ボス":"ドラゴン","ラスボス":"魔王"}
print(enemyDictionary)
print(enemyDictionary["ザコ"])
print(enemyDictionary["中ボス"])

level= "ザコ"
print(enemyDictionary[level])

level="ラスボス"
print(enemyDictionary[level])

#存在しないものはエラーになる
#print(enemyDictionary["敵"])

lesson.py
print(enemyArray)
['スライム', 'モンスター', 'ドラゴン']
print(enemyArray[0])
スライム
print(enemyDictionary)
{'ザコ': 'スライム', '中ボス': 'ドラゴン', 'ラスボス': '魔王'}
print(enemyDictionary["ザコ"])
スライム
print(enemyDictionary["中ボス"])
ドラゴン
level= "ザコ"
スライム
level="ラスボス"
魔王

演習

1.指定の文字を辞書にしてみよう

lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200,"ゴールド":380}

print(skills)

2.ハッシュの中身を確認してみよう

lesson.py

skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書を出力してみよう
print(skills)


3.辞書の特定の値を出力してみよう

lesson.py

skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書から出力してみよう
print(skills["職業"])

03:辞書の基本操作

lesson.py

# 辞書の基本操作
enemies = {"ザコ":"スライム", "中ボス":"ドラゴン", "ラスボス":"魔王"}
print(enemies)
print(enemies["ザコ"])
print(enemies["中ボス"])

#辞書の個数を出すことができる
print(len(enemies))

#辞書に追加することができる
enemies["ザコ2"]="メタルモンスター"
print(enemies)
print(len(enemies))

#値の変更
enemies["中ボス"]="レッドドラゴン"
print(enemies)
print(len(enemies))

#値の削除
del enemies["ザコ"]
print(enemies)
print(len(enemies))

演習

1.辞書の長さを出力してみよう

lesson.py
skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書の長さを出力してみよう
print(len(skills))

2.辞書の要素を追加しよう

lesson.py

skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
# この下で、辞書にデータを追加してみよう

skills["属性"]="炎"
print(skills)

3.辞書の要素を更新しよう

lesson.py

skills = {"職業":"戦士", "体力":100, "魔法力":200, "ゴールド":380}
print(skills)
# この下で、ハッシュを更新してみよう
skills["職業"]="魔法使い"
print(skills)

4.辞書の要素を削除しよう

lesson.py

skills = {"体力" : 100,"職業" : "戦士",  "魔法力" : 200, "ゴールド" : 380}
print(skills)
# この下で、辞書を削除してみよう
del skills["体力"]
print(skills)

04:辞書をループ処理する

lesson.py

# 辞書のおさらい
enemies = {"ザコ":"スライム", "中ボス":"ドラゴン", "ラスボス":"魔王"}
print(enemies)
print(enemies["ザコ"])
print(enemies["中ボス"])

#ループ処理
for rank in enemies:
    print(enemies[rank] + "が、あらわれた!")

#辞書のキーと値をペアで取り出すにはitemsメゾットを使う
for (rank,enemy) in enemies.items():
    print(rank + "の" + enemy + "が、あらわれた!")

演習

1.ループで辞書の値を出力しよう

lesson.py
skills = {"職業" : "戦士", "体力" : 100, "魔法力" : 200, "ゴールド" : 380}
# この下で、辞書の値をループで出力してみよう
for i in skills:
    print(skills[i])

2.ループで辞書のキーと値を出力しよう

lesson.py

skills = {"職業" : "戦士", "体力" : 100, "魔法力" : 200, "ゴールド" : 380}
# この下で、ハッシュの値をループで出力してみよう
for(key,item) in skills.items():
    print(key + "は" + str(item) + "です")

3.ループで合計を計算しよう

lesson.py

points = {"国語" : 70, "算数" : 35, "英語" : 52}
sum = 0
# この下で、辞書の値の合計をループで計算してみよう

for key in points:
    sum +=points[key]
print(sum)

05:リストの整列

lesson.py

# リストの整列

weapons=["イージスソード","ウィンドスピア","アースブレイカー","イナズマハンマー"]

print(weapons)

#アイウエオ順
print(sorted(weapons))

#アイウエオ順の反対
print(sorted(weapons,reverse=True))

wepons2=["4.イージスソード","1.ウィンドスピア","3.アースブレイカー","2.イナズマハンマー"]

#数字>アイウエオ順になる
print(sorted(wepons2))


wepons3=["4.イージスソード","1ウィンドスピア","1アースブレイカー","2.イナズマハンマー"]

#同じ数があった場合、アイウエオ順が優先される
print(sorted(wepons3))



wepons4=["バーニングソード","風神スピア","大地ブレイカー","稲妻ハンマー"]

#漢字やカタカナが混じっているときは注意!ソートされない時がある
print(sorted(wepons4))

lesson.py
['イージスソード', 'ウィンドスピア', 'アースブレイカー', 'イナズマハンマー']
['アースブレイカー', 'イナズマハンマー', 'イージスソード', 'ウィンドスピア']
['ウィンドスピア', 'イージスソード', 'イナズマハンマー', 'アースブレイカー']
['1.ウィンドスピア', '2.イナズマハンマー', '3.アースブレイカー', '4.イージスソード']
['1アースブレイカー', '1ウィンドスピア', '2.イナズマハンマー', '4.イージスソード']
['バーニングソード', '大地ブレイカー', '稲妻ハンマー', '風神スピア']

演習

1.リストを逆順にソートする

lesson.py
apples = [310, 322, 292, 288, 300, 346]
# ここに、要素をソートして表示するコードを記述する
print(sorted(apples))

2.リストを逆順にソートする

lesson.py
apples = [310, 322, 292, 288, 300, 346]
ここに要素をソートして表示するコードを記述する
print(sorted(apples,reverse=True))

3.英単語リストをアルファベット順に並べる

lesson.py
words = ["pumpkin", "orange", "apple", "carrot", "onion"]
# ここに、要素をソートして表示するコードを記述する
print(sorted(words))

06:辞書の整列

lesson.py
weapons={"イージスソード":40,"ウィンドスピア":12,"アースブレイカー":99}
#辞書として表示する
print(sorted(weapons))
print(weapons)

#辞書をキーでソート(整列)する
#タプル・・・データ構造の一種、内容の更新は不可
#リストのように様座な値をまとめて管理するデータ構造のこと
print(sorted((weapons).items()))

演習

1.辞書をキーで昇順にソートしてみよう

lesson.py

math = {"いいだ" : 12, "えんどう" : 99, "あだち" : 40}
# この下で、辞書をキーでソートして出力しよう
# 辞書の整列

#辞書として表示する
print(sorted(math))

2.辞書をソートして辞書で出力する

lesson.py

# 辞書をソートして辞書で出力する
math = {"えんどう" : 99, "あだち" : 40, "いいだ" : 12}

# この下で、辞書をキーでソートして、辞書として出力しよう
print(sorted((math).items()))

07RPGのアイテム一覧を再現1

lesson.py
アイテム一覧:複数のアイテム画像を表示する
回復薬回復薬クリスタル

1.アイテム画像とアイテム名を表示する
2.同じアイテムを複数表示したい
3.アイテムの並び順を管理したい
4.同じアイテム画像のファイルは1つを共有

辞書と配列を組み合わせる
並び順用リスト item_oders

|  並び順|  アイテム名 |
| ---- | ---- |
|  0   |  クリスタル|
|  1   |  "剣"  |
|  2   |  "回復薬"  |
|  3   |  "盾"  |


item_ordersをキーにして、↓の画像ファイルを取り出すようにする

画像用辞書 item.images
|  アイテム名  | 画像ファイル |
| ----       | ---- |
|          |  剣の画像  |
|  クリスタル   |  クリスタルの画像  |
|          |  盾の画像  |
|  回復薬     |  回復薬の画像  |

これをコードにすると
item_orders[0]itemimages[item_orders[0]]クリスタルの画像ファイル
item_orders[1]itemimages[item_orders[1]]
:
:
を繰り返すプログラムを作りたい

08:RPGのアイテム一覧を再現2

lesspn.py

 # 画像用ハッシュ
item_images = {
    "剣":"http://paiza.jp/learning/images/sword.png",
    "盾":"http://paiza.jp/learning/images/shield.png",
    "回復薬":"http://paiza.jp/learning/images/potion.png",
    "クリスタル":"http://paiza.jp/learning/images/crystal.png"
}

# アイテムの並び順配列
items_order = ["クリスタル", "盾", "剣", "回復薬", "回復薬", "回復薬"]

#print(item_images)
#print(items_order)

lesson.py

for item_name in items_order:
    print(item_name)

出力
クリスタル


回復薬
回復薬
回復薬


lesson.py

#アイテム名を取り出す
for item_name in items_order:
    print(item_images[item_name])
    print(item_name)

http://paiza.jp/learning/images/crystal.png
クリスタル
http://paiza.jp/learning/images/shield.png

http://paiza.jp/learning/images/sword.png

http://paiza.jp/learning/images/potion.png
回復薬
http://paiza.jp/learning/images/potion.png
回復薬
http://paiza.jp/learning/images/potion.png
回復薬

lesson.py

#アイテム名を取り出す
for item_name in items_order:
    print("<img src='"+item_images[item_name]+"'>")
    print(item_name+"<br>")
<img src='http://paiza.jp/learning/images/crystal.png'>
クリスタル
<img src='http://paiza.jp/learning/images/shield.png'>

<img src='http://paiza.jp/learning/images/sword.png'>

<img src='http://paiza.jp/learning/images/potion.png'>
回復薬
<img src='http://paiza.jp/learning/images/potion.png'>
回復薬
<img src='http://paiza.jp/learning/images/potion.png'>
回復薬

演習

1.画像を順番に出力する

lesson.py

items_imges = {
    "剣" : "http://paiza.jp/learning/images/sword.png",
    "盾" : "http://paiza.jp/learning/images/shield.png",
    "回復薬" : "http://paiza.jp/learning/images/potion.png",
    "クリスタル" : "http://paiza.jp/learning/images/crystal.png"
}

# アイテムの並び順リスト
items_orders = ["剣", "盾", "回復薬", "クリスタル"]

# ここから下を記述しよう
for item_name in items_orders:
    print("<img src='"+items_imges[item_name]+"'><br>")

2.アイテムリストを作ってみよう

lesson.py
入力
6
回復薬

クリスタル
クリスタル



# 画像用辞書
items_imges = {
    "剣" : "http://paiza.jp/learning/images/sword.png",
    "盾" : "http://paiza.jp/learning/images/shield.png",
    "回復薬" : "http://paiza.jp/learning/images/potion.png",
    "クリスタル" : "http://paiza.jp/learning/images/crystal.png"
}

# ここから下を記述しよう
# 出力するアイテム数を変数に代入
item_cnt = int(input())

# 標準入力にあるアイテムを出力する
while item_cnt > 0:
  item = input()
  print("<img src = '" + items_imges[item] + "'>")
  item_cnt = item_cnt - 1

出力
<img src = 'http://paiza.jp/learning/images/potion.png'>
<img src = 'http://paiza.jp/learning/images/shield.png'>
<img src = 'http://paiza.jp/learning/images/crystal.png'>
<img src = 'http://paiza.jp/learning/images/crystal.png'>
<img src = 'http://paiza.jp/learning/images/sword.png'>
<img src = 'http://paiza.jp/learning/images/sword.png'>

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0