9

さまざまなコード スニペットを格納する JSON を解析しています。まず、これらのスニペットで使用される言語の辞書を作成しています。

snippets = {'python': {}, 'text': {}, 'php': {}, 'js': {}}

次に、JSON をループするときに、スニペットに関する情報を独自の辞書に追加して、上記の辞書に追加します。たとえば、JS スニペットがある場合、最終結果は次のようになります。

snippets = {'js': 
                 {"title":"Script 1","code":"code here", "id":"123456"}
                 {"title":"Script 2","code":"code here", "id":"123457"}
}

水を濁らせるのではなく、PHPで多次元配列を操作する場合は、次のようにします(似たようなものを探しています):

snippets['js'][] = array here

多次元辞書の作成方法について話している人が 1 人か 2 人いるのを見たことがありますが、Python 内で辞書を辞書に追加する方法を突き止めることができないようです。助けてくれてありがとう。

4

2 に答える 2

18

これはautovivificationと呼ばれます:

あなたはそれを行うことができますdefaultdict

def tree():
    return collections.defaultdict(tree)

d = tree()
d['js']['title'] = 'Script1'

アイデアがリストを持つことである場合は、次のことができます。

d = collections.defaultdict(list)
d['js'].append({'foo': 'bar'})
d['js'].append({'other': 'thing'})

キーがアクセスされたときに要素を自動的に作成するという defaultdict のアイデア。ところで、この単純なケースでは、次のように簡単に実行できます。

d = {}
d['js'] = [{'foo': 'bar'}, {'other': 'thing'}]
于 2013-02-14T03:59:25.743 に答える
7

から

snippets = {'js': 
                 {"title":"Script 1","code":"code here", "id":"123456"}
                 {"title":"Script 2","code":"code here", "id":"123457"}
}

辞書のリストが必要なようです。これは、うまくいけばあなたが望むものになるはずのPythonコードです

snippets = {'python': [], 'text': [], 'php': [], 'js': []}
snippets['js'].append({"title":"Script 1","code":"code here", "id":"123456"})
snippets['js'].append({"title":"Script 1","code":"code here", "id":"123457"})
print(snippets['js']) #[{'code': 'code here', 'id': '123456', 'title': 'Script 1'}, {'code': 'code here', 'id': '123457', 'title': 'Script 1'}]

それは明らかですか?

于 2013-02-14T03:59:11.360 に答える