簡體   English   中英

在python中添加了多個字典

[英]addition of more than one dict in 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

嘗試這個:

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}

如果要將所有字典添加到一個“ 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

根據您的要求舉一個非常相似的例子:

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

請在您的信息中添加更多評論,但據我所知,您需要類似的東西,不是嗎?

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

這是否有助於獲得所需的輸出?

   new_dict=dict(ada_dict.items()+wordpress_version_dict.items() +drupal_version_dict.items()+ssl_dict.items()+link_dict.items()+tag_dict.items())
 a =[ada_dict,
wordpress_version_dict,
drupal_version_dict,
ssl_dict,
link_dict,
tag_dict]

 c= {}

for i in a:
    c.update({i:i})

print c
{'ada_dict': 'ada_dict',
 'drupal_version_dict': 'drupal_version_dict',
 'link_dict': 'link_dict',
 'ssl_dict': 'ssl_dict',
 'tag_dict': 'tag_dict',
 'wordpress_version_dic': 'wordpress_version_dic'}
d={}
d.update({"api_responses":c})
print d

{'api_responses': {'ada_dict': 'ada_dict',
  'drupal_version_dict': 'drupal_version_dict',
  'link_dict': 'link_dict',
  'ssl_dict': 'ssl_dict',
  'tag_dict': 'tag_dict',
  'wordpress_version_dic': 'wordpress_version_dic'}}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM