簡體   English   中英

2維字典,鍵為字符串

[英]2-dim Dictionary, key as a string

我有一個可能很簡單的問題,但尚未找到解決方案。 我試圖在字符串varialbe的幫助下訪問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維密鑰存儲到變量中,以便以后訪問字典?

最好的方法是使用鍵的tuple ,而不是像這樣的字符串。

>>> # 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

您想要的似乎是一個可怕的主意。 為什么字符串必須如您所說? 如果您對中間詞典不感興趣-只需使用整個字符串作為鍵

>>> x = {'["one"]["one"]':1,"two":2}
>>> s1 = "two"
>>> x[s1]                                                                                                                                      
2
>>> 2                                                                                                                                              
2
>>> s2 = '["one"]["one"]'                                                                                                                                            
>>> x[s2]
1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM