2011-12-08 14 views
260

辞書をPythonで構築したいと思っています。しかし、私が見るすべての例はリストから辞書をインスタンス化しています。 ..Pythonで新しい辞書を作成する

Pythonで新しい空の辞書を作成するにはどうすればよいですか?

答えて

380

コールdictを行うことができます

new_dict = {} 
+18

dict()と{}の間に違いはありますか?それとも、人々はちょうど1つを他よりも好むか? – Matt

+30

@ Matt明らかにCPython 2.7のdict()は遅いです(6倍遅くなりますか?):http://doughellmann.com/2012/11/the-performance-impact-of-using-dict-instead-of-in- cpython-2-7-2.htmlどんな場合でも、私はdictsと関数呼び出しの間でコードを入力したり移動したりする方が簡単だから、コンストラクタ構文を好むようになっています。 –

+0

@DavidWheatonこれを指摘してくれてありがとう! 個人的には、 'new_dict = dict()'がやや読みやすくなっていますが、パフォーマンスに大きな違いがある場合は...パフォーマンスのために行くでしょう! ;) (PythonとCphythonについて混乱している人のために:[here](http://stackoverflow.com/a/17130986/4773274) – holzkohlengrill

144

あなたは

new_dict = dict() 

または単に書き込みパラメータなしでこの

x = {} 
x['a'] = 1 
+55

+1新しい要素を追加する方法の次の論理的な質問 –

12
d = dict() 

または

プリセットディクショナリを作成する方法を知っている10
d = {} 

または

import types 
d = types.DictType.__new__(types.DictType,(), {}) 
15

も同様に知っておくと便利です:

cmap = {'US':'USA','GB':'Great Britain'} 

def cxlate(country): 
    try: 
     ret = cmap[country] 
    except: 
     ret = '?' 
    return ret 

present = 'US' # this one is in the dict 
missing = 'RU' # this one is not 

print cxlate(present) # == USA 
print cxlate(missing) # == ? 

# or, much more simply as suggested below: 

print cmap.get(present,'?') # == USA 
print cmap.get(missing,'?') # == ? 

# with country codes, you might prefer to return the original on failure: 

print cmap.get(present,present) # == USA 
print cmap.get(missing,missing) # == RU 
+4

良い点!しかし、私は 'cxlate'のビットがあなたの答えを複雑すぎるように見えると思います。私はちょうど初期化の部分を保つだろう。 ( 'cxlate'自体は複雑すぎるので、単にcmap.get(country、 '?')'を返すことができます。) –

+0

https://docs.python.org/2/library/collections.html#collectionsの使用を検討してください。 translate関数を書くのではなく、どこでも.get()を使う代わりに、defaultdictを使うことができます。 – Sparr

+1

おそらく私は、ドキュメントが私には絶対に不透明であることを除いて、恐らくそれはひどいです。私は彼らが私に何をするように言っているのか、なぜそれをやろうとしているのか分かりません。 .get()はまさに正しいことをしているようだが、それは非常に柔軟性がある。私はそれが自分のことを理解していないと確信しています。そのことを念頭に置いて、私の質問は次のとおりです。何がここに保存されているか、ここではより速く、ここではもっと速くなりますか?利益はまさに何ですか? – fyngyrz

8
>>> dict(a=2,b=4) 
{'a': 2, 'b': 4} 

はPythonの辞書に値を追加します。

関連する問題