1

おそらく簡単な質問がありますが、まだ解決策が見つかりません。文字列変数を使用して 2-dim 辞書にアクセスしようとしていますが、正しくアクセスできません。コードのコンテキストでキーを文字列変数に保存できることは非常に重要です

簡単な例:

x = {"one":{"one":1},"two":2}
s1 = "two"
x[s1]                                                                                                                                      
2                                                                                                                                              
s2 = '["one"]["one"]'                                                                                                                                            
x[s2]
Traceback (most recent call last):                                                                                                             
File "<stdin>", line 1, in <module>                                                                                                          
KeyError: '["one"]["one"]'                                                                                                                       

後で辞書にアクセスするために、この 2-dim キーを変数に格納する方法はありますか?

4

2 に答える 2

5

最善の方法は、tupleそのような文字列の代わりにキーの a を使用することです。

>>> # from functools import reduce (uncomment in Py3)
>>> x = {"one":{"one":1},"two":2}
>>> def access(d, keys):
        return reduce(dict.get, keys, d)


>>> access(x, ("two", ))
2
>>> access(x, ("one", "one"))
1
于 2013-04-29T07:03:46.963 に答える
1

あなたが求めているのはひどい考えのようです。なぜあなたが言うように弦がなければならないのですか?中間辞書に興味がない場合は、文字列全体をキーとして使用してください

>>> x = {'["one"]["one"]':1,"two":2}
>>> s1 = "two"
>>> x[s1]                                                                                                                                      
2
>>> 2                                                                                                                                              
2
>>> s2 = '["one"]["one"]'                                                                                                                                            
>>> x[s2]
1
于 2013-04-29T07:09:41.870 に答える