[[ノート/Python]]~
訪問者数 &counter();      最終更新 &lastmod();

**Pythonの辞書dict型への追加 [#bc568d77]
辞書は便利だが、[[tutorial:http://www.python.jp/doc/2.5/tut/node7.html#SECTION007500000000000000000]]には追加の仕方が書いていない。

たとえば[[このページ:http://www.pythonweb.jp/tutorial/dictionary/index5.html]]には、1要素の追加と、updateメソッドを使った別辞書の追加の方法が書いてある。

***1要素の追加 [#d73524e0]

 dict={"yamada":75, "endou":82}

があるとき、それに1つの要素 "itou":89 を追加するには、単純に

 dict["itou"] = 89

とすればよい。何だ、簡単だ。

ちなみに、最初に空の辞書を作るには、
 dict = {}

***updateメソッドを使った辞書オブジェクト同士の連結 [#a0f18f3a]

 dict={"yamada":75, "endou":82}

があるとき、それに別の辞書

 {"honda":52, "tanaka":78}

を追加するには、

 dict.update({"honda":52, "tanaka":78})

とすればよい。

**ついでに、辞書型でのソート [#q91596eb]
たとえば、[[このページ:http://ozexp.blogspot.com/2008/11/python.html]]を参照。

 dict = {'a': 15, 'c': 25, 'b': 33, 'g': 11, 'f': 44}

があるときに、これを(1)キーの順番で、また(2)値の順番で、ソートしたいと思うことがある。

まず、dict.items()を作る。これは(キー,値)のタプルを返す。

ここへ、lambda x,y: cmp(x[1], y[1]) のような関数を使って、sortせよ、というのである。つまり、

 sorted(dict.items(), lambda x,y : cmp(x[1], y[1]))

とする。これはタプルの[1]つまり値を比較してソートするので、

 [('g', 11), ('a', 15), ('c', 25), ('b', 33), ('f', 44)]

となる。他方、もし cmp(x[0], y[0]) とすると、タプルの[0]つまりキーを比較してソートするので、

 [('a', 15), ('b', 33), ('c', 25), ('f', 44), ('g', 11)]

となる。

別法として、[[こちらのページ:http://blog.livedoor.jp/yawamen/archives/51492355.html]]には、

 d = {'A':500, 'B':200, 'C':300, 'D':100, 'E':400}
 for k, v in sorted(d.items()):
     print k, v

や

 for k, v in sorted(d.items(), key=lambda x:x[1]):
     print k, v

が書いてあった。その他、いろいろ方法が考えられそうだ。

***辞書に対するその他の操作 [#y4fe5aae]
この[[ページ:http://python.matrix.jp/tips/container/dict.html]]には、いくつかの面白い操作が載っている。
-リストを辞書に
-辞書をリストに
-書式化文字列への応用

など。

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS