Pythonによる2次元辞書
2022-02-14 04:02:02
Pythonのdictは素早い検索を可能にします。では、配列に2次元配列があるように、2次元のdictはあるのでしょうか?例えば、2つのキーワードをルックアップする必要があるとき。2Dディクトは、以下のようにできます。
dict_2d = {
'a': {
'a': 1, 'b': 3}, 'b': {
'a': 6}}
を作成し、渡す。
dict_2d['a']['b']
にアクセスできるようになります。しかし、新しいキーと値のペアを追加するのは、より複雑です。一次元の辞書の場合は
dict_1d = dict()
dict_1d['a'] = 1
または
dict_1d.update({'a': 1})
これで完了です。しかし、"2-D" 辞書が新しい"キー-値" ペアを追加するとき、単純には使えないのです。
dict_2d['a']['c'] = 8
という形になる。 2次元辞書はキーと値の2階層で混乱することがあるので、最初のキーがすでに存在するかどうかを判断する必要がある。2次元辞書の追加は、以下のような関数で簡単に行うことができる。
def addtwodimdict(thedict, key_a, key_b, val):
if key_a in adic:
thedict[key_a].update({key_b: val})
else:
thedict.update({key_a:{key_b: val}})
例えば、都市間の距離を求めるのに使用することができます
mapdict = dict()
addtwodimdict(mapdict, 'Beijing', 'Guangzhou', 1897)
addtwodimdict(mapdict, 'Chengdu', 'Guangzhou', 1243)
addtwodimdict(mapdict, 'Guangzhou', 'Shanghai', 1212)
addtwodimdict(mapdict, 'Beijing', 'Chengdu', 1516)
addtwodimdict(mapdict, 'Chengdu', 'Shanghai', 1657)
addtwodimdict(mapdict, 'Beijing', 'Shanghai', 1075)
print 'The distance between Chengdu and Guangzhou is ', mapdict['Chengdu']['Guangzhou']
それでもかなり便利です。
関連
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み】「SyntaxError.Syntax」は何ですか?Missing parentheses in call to 'print'」はPythonでどういう意味ですか?
-
[解決済み】 AttributeError:'bytes' object has no attribute 'encode'.
-
pythonの中国語エンコード文字化け問題の解決方法
-
Pythonデータマイニングでよく使われるAutoEDA5つのツールのまとめ
-
Pygame Displayモジュールの使用方法
-
[解決済み] エラー "filename.whl はこのプラットフォームでサポートされているホイールではありません".
-
[解決済み] TypeError: 'str' はバッファのインタフェースをサポートしていません。
-
[解決済み] Python再帰的パスカルトライアングル
-
[解決済み] ImportError: cbookという名前をインポートできません。
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み] Y軸の微小目盛りをオンにする方法 matplotlib
-
RuntimeError: 反復中に辞書のサイズが変更された Solution
-
[解決済み] TypeErrorです。ManyRelatedManagerオブジェクトはイテラブルではありません。
-
[解決済み] __init__.py で参照 'xxx' が見つかりません。
-
[解決済み] pip.reqという名前のモジュールがない
-
[解決済み] Python3でモジュールに属性がないエラーが発生する
-
[解決済み] pyhiveを使用してリモートハイブにアクセスする方法
-
[解決済み] Python 3でxreadlines()の代わりになるものは何ですか?
-
pipのpythonバージョン10.1では、Could not install packages due to anEnvironmentErrorというエラーが発生します。[WinError 5] アクセスが拒否されました。