Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在python中添加多个dict_Python_Dictionary - Fatal编程技术网

在python中添加多个dict

在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.

我有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.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
,然后在创建所需的
字典时更新它。