我有一个python字典
d = {
'facets':{'style':"collared",'pocket':"yes"},
'vars':[ {'facets':{'color':"blue", 'size':"XL"}},
{'facets':{'color':"blue", 'size':"L"}} ]
}
由于'vars'键中有2个词典,我希望有3个不同的词典,如下所示。请动态制作3个文件,因为'vars'可以有任意数量的方面
d1 = {
'facets':{'style':"collared",'pocket':"yes"}
}
d2 = {
'facets':{'color':"blue", 'size':"XL"}
}
d3 = {
'facets':{'color':"blue", 'size':"L"}
}
答案 0 :(得分:2)
不要创建单独的变量。如果您在vars
键中有3个额外的方面词典,则必须弄清楚如何创建d4
等等。稍后您突然想到有多少d*
变量存在。
改为创建一个列表:
facets = [{'facets': d['facets']}] + [facet for facet in d['vars']]
使用列表,您现在可以简单地遍历所有facets
条目来操作或显示它们。
演示:
>>> d = {
... 'facets':{'style':"collared",'pocket':"yes"},
... 'vars':[ {'facets':{'color':"blue", 'size':"XL"}},
... {'facets':{'color':"blue", 'size':"L"}} ]
... }
>>> [{'facets': d['facets']}] + [facet for facet in d['vars']]
[{'facets': {'pocket': 'yes', 'style': 'collared'}}, {'facets': {'color': 'blue', 'size': 'XL'}}, {'facets': {'color': 'blue', 'size': 'L'}}]
>>> from pprint import pprint
>>> pprint(_)
[{'facets': {'pocket': 'yes', 'style': 'collared'}},
{'facets': {'color': 'blue', 'size': 'XL'}},
{'facets': {'color': 'blue', 'size': 'L'}}]
答案 1 :(得分:0)
所以基本会是这样的:
d1 = {k: v for (k,v) in d.iteritems() if k!= 'vars'}
other_ds = [ d1.copy().update(var) for var in d['vars'] ]
但您可以修改以获得您想要的内容,例如:
d2 = d1.copy().update(d['vars'][0])
或(自python 3.5起)
d2 = {**d1, **d['vars'][0]}
或者你觉得它更容易理解的任何组合。