スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
.-- -- スポンサー広告 comment(-) trackback(-)

Pythonメモ書き:ディクショナリ使用上注意点

ディクショナリ使用上の注意点

•シーケンスと同じ操作は出来ない。

•存在しないキーを指定して値を代入すると、要素が追加される。

•キーは文字列でなくてもよい。

•ディクショナリをリストのように使う。
→キーを整数にすれば、表面上はリストとほぼ変わらない。

•スペース行列(多次元配列)の表現
→空白部分を仮想的につくれる。
→ただし、空白箇所のキーは実際に存在しないので、アクセスしようとするとエラーが生じる。
>>>matrix ={}
>>>matrix[(2,3,4)] = 88
>>>matrix[(5,6,7)] = 95
>>>
>>>X=2; Y=3; Z=4
>>>matrix[(X, Y, Z)]
88
>>>matrix
{(2,3,4):88, (5,6,7):95}
>>>
>>>matrix[(2,4,5)]
Traceback (most recent call last):
File "", line 1, in
KeyError: (2,4,5)
>>>


•「キーが存在しない」というエラーを防ぐ
→少なくとも3種類のアプローチがある。

>>>if matrix.has_key((2,4,5)):    #アクセス前にキーの存在を確認
...  print matrix[(2,4,5)]
...else:
...  print 0
...
0
>>>
>>>
>>>try:
...  print matrix[(2,4,5)]     #tryステートメント使用
...except KeyError:         #例外への対処
...  print 0
...
0
>>>
>>>
>>>matrix.get((2,3,4), 0)    #キーが存在すれば値を抽出してリターン
88
>>>matrix.get((2,4,5), 0)    #キーが存在しなければデフォルト値を指定


•ディクショナリの作成方法

○ディクショナリをどのようなものにするか、予め明確になっている場合
{'name':'emi', 'age':25}     #リテラル

○1フィールドずつディクショナリを作る必要がある場合
D = {}              #キーを指定して値を代入
D['name'] = 'emi'
D['age'] = 25

○キーが全て文字列である場合
dict(name='emi', age=25)     #キーワード引数を使う

○キーと値をシーケンスにしたいときに便利
dict([('name', 'mel'), ('age', 25)])  #キーと値のタプルを使う


とりあえず、リテラルと値の代入が出来ればPython初心者のうちはOK

それ以上が必要になってくるのかは。。。
スポンサーサイト
.30 2010 Python:ディクショナリ comment0 trackback0

Pythonメモ書き:ディクショナリのメソッド

ディクショナリの各要素の値のリストを返すvaluesメソッド
>>>d2 = {'python':2, 'c':1, 'perl':3}
>>>d2.values()
[2,1,3]


ディクショナリの各要素のキーと値のペアをタプルのリストのかたちで返すitemsメソッド
>>>d2.items()
[('python',2), ('c', 1), ('perl', 3)]

上記のようなリストは、ディクショナリの各要素に1つずつアクセスするループを作るのに便利

しかし、上記のリストをインデクシングで値を抽出する際、存在しないキーを指定するとエラーになる

そこで、getメソッドを使って値を抽出すれば、存在しないキーを指定するとデフォルト値が戻るのでエラーにならない。

>>>d2.get('perl')
3
>>>d2.get('ruby')
>>>d2.get('ruby', 7)
7


updateメソッドはディクショナリに対し連結に似た操作を行います。

あるディクショナリのキーと値のペアを他のディクショナリにマージできる。

しかし、2つのディクショナリにキーの重複があると、自動的に上書きされるので注意

>>>d2
{'python':2, 'c':1, 'perl':3}
>>>d3 = {'ruby':4, 'java':5}
>>>d2.update(d3)
>>>d2
{'python':2, 'c':1, 'perl':3, 'ruby':4, 'java':5}


popメソッドは、ディクショナリからキーを削除し、そのキーに対応する値を戻す。

>>>d2
{'python':2, 'c':1, 'perl':3, 'ruby':4, 'java':5}
>>>d2.pop('ruby')
4
>>>d2.pop('java')           #キーが削除され、対応する値が戻される
5
>>>d2
{'python':2, 'c':1, 'perl':3}


復習
リストでpopメソッドを使うと
>>>L = ['python', 'c', 'perl']
>>>l.pop()          #末尾の要素が削除され、戻される
'perl'
>>>L
['python', 'c']
>>>L.pop(1)          #指定のインデックスに対応する要素が削除される
'c'
>>>L
['python']
.30 2010 Python:ディクショナリ comment0 trackback0

Pythonメモ書き:ディクショナリの変更(上書き)

ディクショナリは可変性オブジェクトなので、

要素の変更、拡張、縮小などを新しくディクショナリを作ることなく行えます!!

キーを指定して値を代入することで

要素の上書き、要素の追加が出来ます。

では、早速!!

>>>d2 = {'python':2, 'c':1, 'perl':3}
>>>d2['perl'] = ['PHP', 'mySQL', 'bio']        #要素の上書き
>>>d2
{'python':2, 'c':1, 'perl':['PHP', 'mySQL', 'bio']}
>>>del d2['python']                  #要素の削除
>>>d2
{'c':1, 'perl':['PHP', 'mySQL', 'bio']}
>>>d2['ruby'] = 'XML'                 #要素の追加
>>>d2
{'c':1, 'ruby':'XML', 'perl': ['PHP', 'mySQL', 'bio']}


っていう感じです
.30 2010 Python:ディクショナリ comment0 trackback0

Pythonメモ書き:ディクショナリ

ディクショナリでは、キー(key)で要素を管理します。

ディクショナリの特徴

•キーによって要素にアクセスする。
•要素を順不同に並べることができる。
•長さを自由に変えられ、複数種の構成要素の混在が可能
•可変性で、「写像」のカテゴリに属す。
•オブジェクトリファレンスのテーブル


ディクショナリは、プログラム上では

「キーと値のペア」の集合として表されます。

キーと値がペアとなって、一つの要素となり、要素と要素の間はカンマ(,)で区切り

要素は全て、中カッコ({})で囲む。


まずは基本的な操作

>>>d2={'python':2, 'c':1, 'perl':3}   #ディクショナリの作成
>>>d2['python']             #キーによる抽出
2
>>>de['perl']
3
>>>len(d2)             #ディクショナリの要素の数を確認
3
>>>d2.has_key('c')
True                #特定のキーが存在するか確認
>>>'c' in d2
True                #この方法でもキーが確認できる
>>>d2.keys()
['python', 'c', 'perl']       #ディクショナリのキーのリスト作成


ってトコですかね
.30 2010 Python:ディクショナリ comment0 trackback0
 HOME 

プロフィール

emi

Author:emi
日々、コンピューターとにらめっこしていた2010。
公の仕事に就くことを目指して教科書とにらめっこ2011,spring。
はたして2012は・・・

最新トラックバック

検索フォーム

ブロとも申請フォーム

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。