辞書からdefaultdictを構築する方法は?


88

私が持っている場合はd=dict(zip(range(1,10),range(50,61)))、私が構築できるかcollections.defaultdictのうちにdict

唯一の議論defaultdictはファクトリ関数です。初期化してから元の関数を調べてd更新する必要がありdefaultdictますか?

回答:


99

ドキュメントを読む

最初の引数は、default_factory属性の初期値を提供します。デフォルトはNoneです。残りのすべての引数は、キーワード引数を含め、dictコンストラクターに渡された場合と同じように扱われます。

from collections import defaultdict
d=defaultdict(int, zip(range(1,10),range(50,61)))

または辞書を与えられたd

from collections import defaultdict
d=dict(zip(range(1,10),range(50,61)))
my_default_dict = defaultdict(int,d)

3
ネストされたdictに対してこのアプローチを拡張することは可能ですか?以下は意図したとおりに機能しません。default_dict = defaultdict(None,{"a":1,"b":{"c":3}})たとえばdefault_dict["e"]、KeyErrorを発生させ、代わりにNoneを返します
alancalvitti 2018

4
@alancalvittiは、渡すNoneことで不明なキーに対してNoneが生成されることを意味するわけではなく、キーをまったく使用しないためです。あなたがする必要があるdefaultdict(lambda: None, {....})
EricDarchis19年

3

dictを2番目の引数として渡すことにより、dictからdefaultdictを作成できます。

from collections import defaultdict

d1 = {'foo': 17}
d2 = defaultdict(int, d1)

print(d2['foo'])  ## should print 17
print(d2['bar'])  ## should print 1 (default int val )

どのバージョンのPythonを使用していますか?デフォルトではint型valの私のためのPython 3.8.3では0ではなく、1です
shmulvad

0

defaultdict 要素が存在しない場合にキーエラーを返さないコレクションのメソッドです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.