在python中添加多个dict

2024-06-16 09:35:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有6个这样的字典

dict1
dict2
dict3
dict4
dict5
dict6

现在我想把这些都写在一本字典里。所以我用了这个

dict1.update({'dict2':dict2}) 
dict3.update({'dict1':dict1})
dict4.update({'dict4':dict3})
dict5.update({'dict5':dict4})                           
dict6.update({'dict6':dict5})

最后,dict6包含了所有的值,但是它的格式不正确,也不是pythonic的方法

我想改进一下,有什么建议吗

现在我变成这样,但我不想这样

{"main_responses": {"dict1": {"dict2": {"dict3": {"dict4": {"dict5": {}}}}}}}

我要

{"main_responses":{ "dict1": {dict1_values}, "dict2": {dict2_values}..... and so on

Tags: 方法字典main格式updateresponsespythonic建议
3条回答

试试这个:

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}

根据你的要求,我自己举了一个非常类似的例子:

>>> 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}}

由于您没有将所有要添加的词典放在一个位置,所以这很简单。你知道吗

如果要将另一个key添加到所有词典的集合d此处),请执行以下操作:

>>> out = {'api_responses': d}

#or in one step if you do not want to use `d`
>>> out = {'api_responses': {'d1':d1 , 'd2':d2, 'd3':d3, 'd4':d4}}

>>> out
=> {'api_responses': {'d1': {'a': 1}, 'd2': {'b': 2}, 'd3': {'c': 3}, 'd4': {'d': 4}}}

如果要将所有dict添加到一个“newDict”中,如果多个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}

https://repl.it/ND3p/1

相关问题 更多 >