在python中添加多个dict
我有6个像这样的单词在python中添加多个dict,python,dictionary,Python,Dictionary,我有6个像这样的单词 dict1 dict2 dict3 dict4 dict5 dict6 {"main_responses": {"dict1": {"dict2": {"dict3": {"dict4": {"dict5": {}}}}}}} 现在我想把所有这些都写在一本字典里,所以我用了这个 dict1.update({'dict2':dict2}) dict3.update({'dict1':dict1}) dict4.update({'dict4':dict3}) dict5.
dict1
dict2
dict3
dict4
dict5
dict6
{"main_responses": {"dict1": {"dict2": {"dict3": {"dict4": {"dict5": {}}}}}}}
现在我想把所有这些都写在一本字典里,所以我用了这个
dict1.update({'dict2':dict2})
dict3.update({'dict1':dict1})
dict4.update({'dict4':dict3})
dict5.update({'dict5':dict4})
dict6.update({'dict6':dict5})
最后,dict6包含了所有的值,但它的格式不正确,也不是pythonic的方法
我想改进这一点,有什么建议吗
现在我是这样,但我不想这样
dict1
dict2
dict3
dict4
dict5
dict6
{"main_responses": {"dict1": {"dict2": {"dict3": {"dict4": {"dict5": {}}}}}}}
我想要
{"main_responses":{ "dict1": {dict1_values}, "dict2": {dict2_values}..... and so on
请在你的帖子中添加更多评论,但我看到你需要这样的东西,不是吗
>>> foo=lambda dest, src, tag: [dest.update({tag:i}) for i in src]
>>> x={1:1}
>>> y={2:2}
>>> foo(x, y, "tag")
[None]
>>> x
{1: 1, 'tag': 2}
>>> y
{2: 2}
请在你的帖子中添加更多评论,但我看到你需要这样的东西,不是吗
>>> foo=lambda dest, src, tag: [dest.update({tag:i}) for i in src]
>>> x={1:1}
>>> y={2:2}
>>> foo(x, y, "tag")
[None]
>>> x
{1: 1, 'tag': 2}
>>> y
{2: 2}
如果要在一个“newDict”中添加所有dict,请在多个dict中存在多个键时继续:
ada_dict={'k1':'v1'}
wordpress_version_dict={'k2':'v2'}
drupal_version_dict={'k3':'v3'}
ssl_dict={'k4':'v4'}
link_dict={'k5':'v5'}
tag_dict={'k5':'v5'}
newDict={}
newDict.update( (k,v) for k,v in ada_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in wordpress_version_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in drupal_version_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in ssl_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in link_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in tag_dict.iteritems() if v is not None)
print {'api_response':newDict}
如果要在一个“newDict”中添加所有dict,请在多个dict中存在多个键时继续:
ada_dict={'k1':'v1'}
wordpress_version_dict={'k2':'v2'}
drupal_version_dict={'k3':'v3'}
ssl_dict={'k4':'v4'}
link_dict={'k5':'v5'}
tag_dict={'k5':'v5'}
newDict={}
newDict.update( (k,v) for k,v in ada_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in wordpress_version_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in drupal_version_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in ssl_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in link_dict.iteritems() if v is not None)
newDict.update( (k,v) for k,v in tag_dict.iteritems() if v is not None)
print {'api_response':newDict}
根据您的要求,我自己举了一个非常类似的例子:
>>> d1 = {'a':1}
>>> d2 = {'b':2}
>>> d3 = {'c':3}
>>> d4 = {'d':4}
#magic happens here
>>> d = {'d1':d1 , 'd2':d2, 'd3':d3, 'd4':d4}
>>> d
=> {'d1': {'a': 1}, 'd2': {'b': 2}, 'd3': {'c': 3}, 'd4': {'d': 4}}
由于您没有在一个位置添加所有需要添加的词典,因此这几乎是最简单的
如果您想将另一个键
添加到所有词典的集合中(d
此处),请执行以下操作:
根据您的要求,我自己举了一个非常类似的例子:
>>> d1 = {'a':1}
>>> d2 = {'b':2}
>>> d3 = {'c':3}
>>> d4 = {'d':4}
#magic happens here
>>> d = {'d1':d1 , 'd2':d2, 'd3':d3, 'd4':d4}
>>> d
=> {'d1': {'a': 1}, 'd2': {'b': 2}, 'd3': {'c': 3}, 'd4': {'d': 4}}
由于您没有在一个位置添加所有需要添加的词典,因此这几乎是最简单的
如果您想将另一个键
添加到所有词典的集合中(d
此处),请执行以下操作:
这是否有助于获得您想要的输出
new_dict=dict(ada_dict.items()+wordpress_version_dict.items() +drupal_version_dict.items()+ssl_dict.items()+link_dict.items()+tag_dict.items())
这是否有助于获得您想要的输出
new_dict=dict(ada_dict.items()+wordpress_version_dict.items() +drupal_version_dict.items()+ssl_dict.items()+link_dict.items()+tag_dict.items())
试试这个:
from itertools import chain
d = chain.from_iterable(d.items() for d in (ada_dict,
wordpress_version_dict,
drupal_version_dict,
ssl_dict,
link_dict,
tag_dict))
api_response = {'api_response':d}
或者使用
reduce
:
d = reduce(lambda x,y: dict(x, **y), (ada_dict,
wordpress_version_dict,
drupal_version_dict,
ssl_dict,
link_dict,
tag_dict))
api_response = {'api_response':d}
试试这个:
from itertools import chain
d = chain.from_iterable(d.items() for d in (ada_dict,
wordpress_version_dict,
drupal_version_dict,
ssl_dict,
link_dict,
tag_dict))
api_response = {'api_response':d}
或者使用
reduce
:
d = reduce(lambda x,y: dict(x, **y), (ada_dict,
wordpress_version_dict,
drupal_version_dict,
ssl_dict,
link_dict,
tag_dict))
api_response = {'api_response':d}
请提供您的输入和要求的输出。什么是“格式正确”;没有标准的字典格式。我已经添加了描述@Kaushiknp你可以看到我所说的格式@BurhanKhalidPls提供你的输入和所需的输出。你说的“格式正确”是什么意思;没有标准的字典格式。我已经添加了描述@Kaushiknp你可以看到我所说的格式@Burhankhalid如果我有任何dict空白,我可能会得到什么@KaushikNP你能为解决这个问题提出什么建议吗situation@manan_kalariya:类似于
{'api_responses':{'d1':{},{'d2':{},'d3':{'c':3},'d4':{'d':4}}
假设你的d1
和d2
是空的。是的,但在我动态创建dict时,有很多情况下'd1':{/code>甚至是空的(布兰克·迪克特)创建的不是我能做的吗?@manan_kalariya:如果它不是在声明最终字典时创建的,请为该元素保留一个None
的虚拟占位符,然后在创建所需的字典时更新它。如果我的dict为空,那么我可能会得到什么?@KaushikNP有什么建议吗situation@manan_kalariya:类似于{'api_responses':{'d1':{},{'d2':{},'d3':{'c':3},'d4':{'d':4}}
假设你的d1
和d2
是空的。是的,但在我动态创建dict时,有许多情况下,'d1':{}
甚至是{}(blank dict)创建的不是我能做的吗?@manan_kalariya:如果在声明最终字典时没有创建,请为该元素保留一个虚拟占位符None
,然后在创建所需的字典时更新它。