[[ノート/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]]には、いくつかの面白い操作が載っている。
-リストを辞書に
-辞書をリストに
-書式化文字列への応用
など。