[Python] ディクショナリ | dict

in SteemCoinPan •  last month 

こんにちは、@yasuです。

今回は、ディクショナリ(dict)の使い方を習得したいと思います。

実行環境はこちらです。
https://repl.it/

分かったこと。

定義するとき、{}で囲む 例{キー1:値1, キー2:値2, キー3:値3}
リストlistとの違いは、キーを用いて要素の追加、削除、更新をする。

コード

# ----------------------------------------
# ディクショナリ
# ----------------------------------------

# 代入方法1
menu={100:"ラーメン",101:"餃子",200:"ライス",300:"ビール"}
print(type(menu))
#<class 'dict'>

#要素数 len
print(len(menu))
#4

print(menu)
#{100: 'ラーメン', 101: '餃子', 200: 'ライス', 300: 'ビール'}

# 代入方法(キーは文字列もOK)
menu2={"A100":"ラーメン","A101":"餃子","A200":"ライス","A300":"ビール"}
print (menu2)
#{'A100': 'ラーメン', 'A101': '餃子', 'A200': 'ライス', 'A300': 'ビール'}


# 参照方法 [キー]
# [100],[101],[200]
print(menu[100])
#ラーメン

try:
    print(menu[102])
except KeyError as identifier:
    print("KeyError:",identifier)
    #KeyError: 102

#代入OK
try:
    menu[100]="五目焼きそば"
    print(menu[100])
    #五目焼きそば
except TypeError as identifier:
    print(identifier)
    
#追加(新しいキー)
menu[102]="五目ラーメン"
print(menu)
#{100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール', 102: '五目ラーメン'}

#追加(新しいキー)
menu[201] ="ライス"
print(menu)
#{100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール', 102: '五目ラーメン', 201: 'ライス'}

#削除(指定キー)
m = menu.pop(102)
print(menu)
#{100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール', 201: 'ライス'}
print(m)
#五目ラーメン

#削除(最後)
m=menu.popitem()
print(menu)
#{100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール'}
print(m)
#(201, 'ライス')

#検索(存在するときは、値を返す)
v = menu.get(101)
print(v)
#餃子

#検索(存在しないときは、Noneを返す)
v = menu.get(102)
print(v)
#None

import sys
try:
  v = menu[101]
  print(v)
  #餃子
  v = menu[102]
  print(v)
except KeyError as identifier:
    print("KeyError:",identifier)
    #KeyError: 102
except :
    print("[例外]",sys.exc_info())

# ----------------------------------------
# 代入方法2(キーのみ代入される!?)
[name,price,oomori_umu]={1:"ラーメン",2:400,3:True}
print(type(name))
#<class 'int'>
print(name,price,oomori_umu)
#1 2 3

#複製(別物)
menu2 = menu.copy()
menu.clear()
print(menu,menu2)
#{} {100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール'}

#複製ではない(同じもの)
menu = menu2
print(menu,menu2)
#{100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール'} {100: '五目焼きそば', 101: '餃子', 200: 'ライス', 300: 'ビール'}
menu.clear()
print(menu,menu2)
#{} {}


menu = {100:"ラーメン",101:"餃子",200:"ライス",300:"ビール"}
items = menu.items()
print(items)
#dict_items([(100, 'ラーメン'), (101, '餃子'), (200, 'ライス'), (300, 'ビール')])

no = 0
for v in items:
  no+=1
  print(no,v[0],v[1]) 
#1 100 ラーメン
#2 101 餃子
#3 200 ライス
#4 300 ビール

#もう一つの方法
no = 0
for a,b in items:
  no+=1
  print(no,a,b) 
#1 100 ラーメン
#2 101 餃子
#3 200 ライス
#4 300 ビール

#enumerateを使う方法
for x in enumerate(menu.items()):
  print(x)
#(0, (100, 'ラーメン'))
#(1, (101, '餃子'))
#(2, (200, 'ライス'))
#(3, (300, 'ビール'))

#enumerateを使うもう一つの方法
for x in enumerate(menu):
  print(x,menu[x[1]])
#(0, 100) ラーメン
#(1, 101) 餃子
#(2, 200) ライス
#(3, 300) ビール

# ----------------------------------------
#型変換(キーのみ代入される!?)
menu={100:"ラーメン",101:"餃子",200:"ライス",300:"ビール"}
menu = tuple(menu)
print(menu)
#(100, 101, 200, 300)

実行結果

image.png

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!
Sort Order:  

@yasu transfered 0.5 KRWP to @krwp.burn. voting percent : 5.90%, voting power : 60.06%, steem power : 1922063.43, STU KRW : 1200.
@yasu staking status : 250 KRWP
@yasu limit for KRWP voting service : 0.5 KRWP (rate : 0.002)
What you sent : 0.5 KRWP [47162977 - 65661186fd31b592dcff1f974f3f2095cf614b8c]