在不更改旧dict的键的情况下向旧字典添加新键和值?

时间:2018-05-23 09:36:18

标签: python python-2.7 dictionary

我有一个字典,其中包含网址作为关键字,打开端口作为其值。即dict200 = {}

dict200 = {}
{'http://REDACTED1.com': [21, 22, 80, 443, 3306], 'http://www.REDACTED2.com': [80, 443]}

现在我有另一个内容不同的词典,即newerdict = {}

newerdict = {}
newerdict = {'Drupal , ': '7', 'Apache , ': '2.4.34'}

现在请假设在redacted1中使用了Apache服务器,而在redacted2上使用了Drupal。

现在我想要的是这样的东西: -

{'http://redacted1.com': [{'apache': '2.4.34' }], 'http://redacted2.com': [{'Drupal': '7'}]}

希望这次我解释得更好。寻找任何回复。

修改: -

不知怎的,我能够替换值的位置,但是现在我面临的问题是,我无法在dict中访问dict的属性。

这是完整输出,

http://redacted1.com : [{'\tApache (web-servers), ': '2.4.34'}]
http://redacted2.com : [{'\tDrupal (cms), ': '7'}]

但我怎么打印

Apache = 2.4.34

1 个答案:

答案 0 :(得分:0)

我假设您几乎没有打错字,并且可以自己进行格式化。 您需要一个映射来解决此问题。

这基本上可以解决您的问题

dict200 = {'http://redacted1.com': [21, 22, 80, 443, 3306], 'http://redacted2.com': [80, 443]}
newerdict = {'Drupal': '7', 'Apache': '2.4.34'}

mapping = {'http://redacted1.com': 'Apache', 'http://redacted2.com' : 'Drupal'}

new_output = dict()
for key, value in mapping.items():
   new_output[key] = [{value: newerdict[value]}]
print(new_output)

编辑: 使用ordereddict保留python 3.5版的插入顺序。 Though python 3.7+ has it built in

from collections import OrderedDict
dict200 = OrderedDict({'http://redacted1.com': [21, 22, 80, 443, 3306], 'http://redacted2.com': [80, 443]})
newerdict = OrderedDict({'Drupal': '7', 'Apache': '2.4.34'})

dict200_index_wise = list(dict200.items())
newerdict_index_wise = list(newerdict.items())
new_output = dict()
for i in range(len(dict200)):
   new_output[dict200_index_wise[i][0]] = [{newerdict_index_wise[i][0]:newerdict_index_wise[i][1]}]
print(new_output['http://redacted1.com'][0]['Drupal'])