2015-12-23 75 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'