2015-12-23 114 views
4

我有一個嵌套的字典:如何使用的String.Format嵌套字典

KEYS1 = ("A", "B", "C") 
KEYS2 = ("X", "Y", "Z") 

d = dict.fromkeys(KEYS1, dict.fromkeys(KEYS2, 0)) 

我現在想嵌入使用的格式,它的東西在一個字符串值,像

print("d['A']['X']={A,X:d}".format(**d)) 

到輸出:

d['A']['X']=0 

這是行不通的。有關如何正確執行此操作的任何建議?

+0

的字典能否請您解釋一下更預期的輸出? –

+0

這是否更清晰? – Oxonon

+0

'd = dict.fromkeys(KEYS1,dict.fromkeys(KEYS2,0))' - 小心。外部字典中的每個值都是* same *內部字典,所以你對'd ['A']'做的任何操作都可以通過'd ['B']'看到。 – user2357112

回答

6
KEYS1 = ("A", "B", "C") 
KEYS2 = ("X", "Y", "Z") 

d = dict.fromkeys(KEYS1, dict.fromkeys(KEYS2, 0)) 

print("d['A']['X']={A[X]}".format(**d)) 

輸出:

d['A']['X']=0 

在Python 3.6,你將能夠訪問字符串中的字典使用Literal string interpolation

In [23]: print(f"d['A']['X']={d['A']['X']}") 
d['A']['X']=0 
1

你可以利用str.format的能力對你提供的參數做下標。

KEYS1 = ("A", "B", "C") 
KEYS2 = ("X", "Y", "Z") 

d = dict.fromkeys(KEYS1, dict.fromkeys(KEYS2, 0)) 

print("d['A']['X']={[A][X]}".format(d)) 

這實在是類似於Padraic Cunningham's answer,這也是做一個良好和正確的方法(這就是爲什麼我爲它+1了)。不同的是,在他的回答中,字符串{A[X]}的部分意味着.format方法正在尋找一個關鍵字參數,通過解開字典d來獲取關鍵字參數。

在我的方法,它期待的位置參數,它必須是一個關鍵'A'的字典,這也必須與關鍵'X'