辞書型のデータ

例78 辞書型のデータを扱う例

[任意]ファイル名: dictionary.py エンコーディング: UTF-8

#! /usr/bin/python
# -*- coding: utf-8 -*-

# 辞書のテスト

print ('辞書のテスト')

# 辞書は文字列とデータを関連付けたペアを0個以上含んだデータ型で
# データを出し入れする際にはその文字列(キー)を指定する

# 「[キー文字列] : [中身]」をコンマで区切ったものを波括弧で囲む形で初期値を作る
# 空の辞書は「ej = {}」のようにして作る
ej = {'pen' : 'ペン',
      'book' : '本',
      'desk' : '机'}

# 値を取り出すには角括弧にキー文字列を入れる
print ('英語の"pen"は日本語の"{0}"'.format (ej['pen']))
print ('英語の"book"は日本語の"{0}"'.format (ej['book']))
print ('英語の"desk"は日本語の"{0}"'.format (ej['desk']))

# 存在しないキーで値を取り出そうとするとKeyErrorという例外(通知)が出る
try:
  print ('英語の"door"は日本語の"{0}"'.format (ej['door']))
except KeyError:
  print ('辞書ejには項目"door"はありません')

# あるキーに対応する値が存在するかどうかは「in」を用いて確認できる
if 'book' in ej:
  print ('辞書ejに項目"book"はあります')
else:
  print ('辞書ejに項目"book"はありません')
if 'door' in ej:
  print ('辞書ejに項目"door"はあります')
else:
  print ('辞書ejに項目"door"はありません')

# 内容を追加/更新するには角括弧にキー文字列を入れたものに対して「=」で代入を行う
ej['door'] = 'ドア'
print ('英語の"door"は日本語の"{0}"'.format (ej['door']))
ej['door'] = '扉'  # これを入れた段階で古い「ドア」というデータは消える
print ('英語の"door"は日本語の"{0}"'.format (ej['door']))

# キーには日本語も使用できる
je = {'ペン' : 'pen',
      '本' : 'book',
      '机' : 'desk',
      '扉' : 'door'}

# 辞書の中に存在するキーの部分を順に取り出す
# [辞書].keys()の結果をfor文でループ処理する形
print ('辞書jeの中の単語一覧:')
for key in je.keys ():
  print (' * {0}'.format (key))

# キーとそれに対応する値の各ペアについての処理を順に行う
# [辞書].items()の結果をfor文でループ処理する形
for (key, val) in je.items ():
  print ('日本語の"{0}"は英語の"{1}"'.format (key, je[key]))

print ('終わり')

実行例:

辞書のテスト
英語の"pen"は日本語の"ペン"
英語の"book"は日本語の"本"
英語の"desk"は日本語の"机"
辞書ejには項目"door"はありません
辞書ejに項目"book"はあります
辞書ejに項目"door"はありません
英語の"door"は日本語の"ドア"
英語の"door"は日本語の"扉"
辞書jeの中の単語一覧:
 * 扉
 * 机
 * 本
 * ペン
日本語の"扉"は英語の"door"
日本語の"机"は英語の"desk"
日本語の"本"は英語の"book"
日本語の"ペン"は英語の"pen"
終わり