Pythonで新しい辞書を作成する


454

Pythonで辞書を作りたいのですが。しかし、私が目にするすべての例は、リストなどから辞書をインスタンス化しています。..

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

回答:


661

dictパラメータなしで呼び出す

new_dict = dict()

または単に書く

new_dict = {}

39
dict()と{}の間に違いはありますか?または、人々はどちらか一方を好むだけですか?
Matt

52
マット@どうやらCPythonの2.7 dictのは、()(6倍遅く?)遅い、以下を参照してください。doughellmann.com/2012/11/...は、私はそれが簡単に入力するために見つけて移動コードので、いずれにせよ、私はとにかく、コンストラクタ構文を好むように始めています辞書と関数呼び出しの間。
David Wheaton 2013年

16
Python 3.xでdict()より{}を使用する方が3倍高速であることを確認します
Alex Azazel

8
ええ、私は約4倍高速のpython 3.6で取得{}超えるdict()ためと5倍[]以上list()
マイケルホール

10
ほとんどの場合、6倍の時間がかかっても問題ありません。これは、まだ目立って短い時間であるためです。
hypehuman '10年

247

あなたはこれを行うことができます

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

107
新しい要素をそれに追加する方法についての次の論理的な質問
マットクライン

27

プリセット辞書の書き方を知ることも知っていると役に立ちます:

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

# Explicitly:
# -----------
def cxlate(country):
    try:
        ret = cmap[country]
    except KeyError:
        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それ自体は複雑すぎます。あなたはただそうすることができますreturn cmap.get(country, '?')。)
ダニエル・ダラボス2015

変換関数を作成したり、どこでも.get()を使用する代わりに、docs.python.org / 2 / library / …の使用を検討してください。
Sparr

1
おそらく私はそうするでしょうが、ドキュメントが完全に不透明であることを除けば、それはひどいです。私は彼らが私に何をするように言っているのか、なぜ私がそれをしなければならないのか分かりません。そして.get()は正確に正しいように見えます-それに非常に柔軟です。きっと私の理解不足だと思います。それを念頭に置いて、私の質問は次のとおりです。なぜわざわざ?ここで何が保存され、ここで簡単に、より速くここなどに保存されますか?メリットはまさに何ですか?
fyngyrz 2015

1
無関係ですが、KeyErrorKeyboardInterruptやのようなものをキャッチするSystemExit)例外を除いて明示的にをキャッチする必要があります。
Arnav Borborah

Arnavさん、もちろんそうです。それに応じて編集。ありがとうございました!
fyngyrz


15
d = dict()

または

d = {}

または

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

違いは何ですかtypes.DictType.__new__(types.DictType, (), {})、ちょうど{}

2
これを読んでいる人にとって:最後の「解決策」はちょっと冗談です-あなたそれ使うことができます(少なくともpython 2.xでは-py3kでは動作しません)が、それを考えている人は誰もしたくありませんso ;-)
bruno desthuilliers


4
>>> dict.fromkeys(['a','b','c'],[1,2,3])


{'a': [1, 2, 3], 'b': [1, 2, 3], 'c': [1, 2, 3]}

辞書は、新しい空のインスタンスでなければならないことは質問の状態
Wesam
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.