由另一本词典将列表重新插入词典



我有一个字典,里面有一些值是类型列表,我需要在另一个字典中转换每个列表,并在列表的位置插入这个新字典。

基本上,我有这本字典

Dic = {
'name': 'P1', 
'srcintf': 'IntA', 
'dstintf': 'IntB', 
'srcaddr': 'IP1', 
'dstaddr': ['IP2', 'IP3', 'IP4'], 
'service': ['P_9100', 'SNMP'],
'schedule' : 'always',
}

我需要重新放置列表中的值预期输出:

Dic = {
'name': 'P1', 
'srcintf': 'IntA', 
'dstintf': 'IntB', 
'srcaddr': 'IP1', 
'dstaddr': [
{'name': 'IP2'}, 
{'name': 'IP3'}, 
{'name': 'IP4'}
],
'service': [
{'name': 'P_9100'},
{'name': 'SNMP'}
],
'schedule' : 'always',
}

到目前为止,我已经想出了这个代码:

for k,v in Dic.items():
if not isinstance(v, list):
NewDic = [k,v]
print(NewDic)
else:
values = v
keys = ["name"]*len(values)
for item in range(len(values)):
key = keys[item]
value = values[item]
SmallDic = {key : value}
liste.append(SmallDic)
NewDic = [k,liste]

谁打印这个

['name', 'P1']
['srcintf', 'IntA']
['dstintf', 'IntB']
['srcaddr', 'IP1']
['schedule', 'always']
['schedule', 'always']

我认为这是循环的一个问题,但到目前为止我还没能弄清楚。

您需要重新创建字典。对现有代码进行一些修改,使其生成一个新的字典&修正else条款:

NewDic = {}
for k, v in Dic.items():
if not isinstance(v, list):
NewDic[k] = v
else:
NewDic[k] = [
{"name": e} for e in v  # loop through the list values & generate a dict for each
]
print(NewDic)

结果:

{'name': 'P1', 'srcintf': 'IntA', 'dstintf': 'IntB', 'srcaddr': 'IP1', 'dstaddr': [{'name': 'IP2'}, {'name': 'IP3'}, {'name': 'IP4'}], 'service': [{'name': 'P_9100'}, {'name': 'SNMP'}], 'schedule': 'always'}

最新更新