1. ホーム
  2. python

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']

それでもかなり便利です。