1. ホーム
  2. スクリプト・コラム
  3. パイソン

Pythonのdefaultdictとdictの違いについて

2022-02-01 12:54:30

この記事は、WeChat: "アルゴリズムとプログラミングの美学"より転載しています。

I. 問題の説明

collections モジュールの defauldict と同じように使用されます。 dict 何が違うのか、なぜ dict の中に key の値は存在せず、一方 defaudict は、以下に説明するように、エラーを報告しない。

II. 解決方法

を使用して遭遇した問題を解決するために使用されます。

コード例です。

import collections

//reference collections module

dic=collections.defaultdict(int)

//Use the module's defauldict to define a dictionary

for num in range(10):

dic[num]+=1

//assign a value to the dictionary

print(dic) 



出力します。

defaultdict(<class 'int'>, {0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1})

コードから、参照先である collections モジュールの defauldict() 属性は、辞書を定義し、値を割り当て、キー値を追加しています。このことから、元の dic には key を直接使用する場合、辞書は値 1 を返します。 dict はどのような結果になるでしょうか?

コード例です。

dic=dict()

// Define a dictionary

for num in range(10):

dic[num]+=1

//assign a value

print(dic)



出力します。

例外が発生しました。KeyError

0

File "C:\UsershiaHasee-where2go-python-test, line 81, in <module> dic[num]+=1

しかし、出力では dic() 対応する key の値、すなわち、定義された dic が定義された num の値と同じにすることは可能です。 defaultdict() と同じ効果が得られます。

コード例です。

dic=dict()

for num in range(10):

    if num not in dic:

        dic[num]=0

//add num and assign 0 when num is not a key value in dic

    dic[num]+=1

print(dic)



出力します。

{0: 1, 1: 1, 2: 1, 3: 1, 4: 1, 5: 1, 6: 1, 7: 1, 8: 1, 9: 1}

III. 結論

上記のコードと結果から、辞書を定義する際に、対応する key の値は defauldict() はキーの値を辞書に追加して値0を代入しますが、dict()で直接定義するとエラーになります: 対応する key の値を指定します。しかし、if文を使って積極的にキーに値を割り当てることで、次のようなことも実現できます。 defaultdict() と同じです。

この時点でこの記事の Python defaultdict と同じです。 dict Pythonにおけるdefaultdictとdictの違いについては、Script Houseの過去記事を検索していただくか、引き続き以下の関連記事をご覧ください。