python辞書の初期化方法全!!!

2064 ワード

pythonでは辞書がよく使われていますが、残念ながら自分では覚えられません.覚えやすいのは下手な筆頭に及ばないという話は間違いありません.
方法1:
(これは比較的一般的なものです)
d1 = {'x': 1, 'y': 2}
print(d1['x'])

>>> 1

もちろんこのような特别な理解もありますが、书くのはそんなによくありません......フレンドリー
d1' = {}
d1'[k1] = v1
d1'[k2] = v2
.......

方法2:
d2 = dict(x = 1, y = 2)
print(d2['x'])

>>> 1

方法3:
d3 = dict(zip('abc', [1,2,3])
print(d3['b'])

>>> 2

方法4:(このような私はあまり使ったことがなくて、本の上で偶然見て先にメモして、後で発見してから補充します)
d4 = dict.fromkeys(range(2), 3)
print(d4[1])

>>> 3

d4' = dict.fromkeys(('x', 'y'),)
print(d4'['x'])

>>> None

方法5:
list = [('a', 1), ('b', 2), ('c', 3)]
d5 = dict(list)
print(d5['a'])

>>> 1

辞書は関連コンテナで、各キーは個別の値にマッピングされます.キーを複数の値にマッピングするには、リストやコレクションなどの別のコンテナに複数の値を保存する必要があります.例:
m = {
   'a' : [1, 2, 3],
   'b' : [4, 5]
}

n = {
   'a' : {1, 2, 3},
   'b' : {4, 5}
}

リストを使用するか、セットを使用するかは、使用の意図に依存します.要素の挿入順序を保持する場合は、リストを使用します.重複する要素を除去したい場合(順序を気にしない)、コレクションを使用します.
このような辞書を容易に作成するためにcollectionsモジュールのdefaultdictクラスを利用することができる.defaultdictの特徴は、最初の値を自動的に初期化することです.これにより、要素を追加するだけでいいです.たとえば、次のようにします.
from collections import defaultdict
#list
d = defaultdict(list)
d['a'].append(1)
d['a'].append(2)
d['b'].append(4)
.......
#set
d = defaultdict(set)
d['a'].add(1)
d['a'].add(2)
d['b'].add(4)
.......

原則として,1つのキー多値辞書を構築することは容易である.しかし、最初の値を自分で初期化してみると、これは雑然とします.たとえば、次のようなコードが書かれる場合があります.
d = {}
for key, value in pairs:
    if key not in d:
        d[key] = []
    d[key].append(value)

defaultdictを使用すると、コードは簡単になります.
d = defaultdict(list)
for key, value in pairs:
    d[key].append(value)

こんなにたくさん書いておいて、後で補充します~