Pythonのdefaultdictとdictの違いについて
この記事は、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の過去記事を検索していただくか、引き続き以下の関連記事をご覧ください。
関連
-
[解決済み】Python 3 ImportError: ConfigParser'という名前のモジュールがない
-
[解決済み] ソケットを接続しようとするとECONNABORTEDが表示されますが、どういう意味ですか?
-
[解決済み] 要求されたアドレスは、そのコンテキストでは有効ではありません。
-
[解決済み] JSON ValueError: プロパティ名:1行目2列目(char 1)が必要です。
-
[解決済み] ImportError: flask_sqlalchemy' という名前のモジュールがない/2バージョンのPythonがインストールされている
-
[解決済み] ImportError: concurrent.futures.processという名前のモジュールはありません。
-
[解決済み] python3.2用pycompile。
-
[解決済み] NumPyの配列を列ごとに解凍する
-
(解決済み)ビルドプロンプトの後にプログラムを書くsublime textは、' ' に '__main__' モジュールを見つけることができません。
-
Watching live videos and playing with CSS animations on Jupyter is so cool!
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ImportError: Missing required dependencies ['numpy'] (必要な依存関係がありません)
-
[解決済み] pygame clock.tick() vs ゲームメインループのフレームレート
-
[解決済み] Python IOError: ファイルが読み出し用に開かれていません
-
[解決済み] import httplib ImportError: httplib という名前のモジュールがない。
-
[解決済み] 辞書にあるすべての値を合計する方法は?
-
[解決済み] python "break" エラー: ループ外でのブレーク
-
[解決済み] Windows- アプリクリック時のPyinstallerエラー "failed to execute script" について
-
urlエラーで最大再試行回数を超えました
-
virtualenvwrapper.hook_loader'のモジュール仕様を見つける際にpythonエラーが発生しました。
-
import Error:Missing optional dependency 'openpyxl'. pipまたはcondaを使用してopenpyxlをインストールしてください。