ノート/Python
訪問者数 1128      最終更新 2010-02-08 (月) 10:09:13

Pythonの辞書dict型への追加

辞書は便利だが、tutorialには追加の仕方が書いていない。

たとえばこのページには、1要素の追加と、updateメソッドを使った別辞書の追加の方法が書いてある。

1要素の追加

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

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

dict["itou"] = 89

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

ちなみに、最初に空の辞書を作るには、

dict = {}

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

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

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

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

を追加するには、

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

とすればよい。

ついでに、辞書型でのソート

たとえば、このページを参照。

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)]

となる。

別法として、こちらのページには、

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

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

辞書に対するその他の操作

このページには、いくつかの面白い操作が載っている。

など。


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-02-08 (月) 10:09:13 (2782d)