Python 如何附加dict中的列表?

Python 如何附加dict中的列表?,python,list,dictionary,Python,List,Dictionary,我有一本字典,里面有类似于'0/RP0':['NCS1K4-CNTLR']的条目。对于每个条目,我必须向值中添加另一个字符串。例如,添加'OPERATIONAL'会导致'0/RP0':['NCS1K4-CNTLR','OPERATIONAL']。我需要对完整的字典执行此操作,并有一个要附加的值列表 下面我有两本字典 new_dict = {'0/RP0': ['NCS1K4-CNTLR'], '0/PM1': ['NCS1K4-2KW-AC'], '0/PM0': ['NCS1K4-2KW-AC

我有一本字典,里面有类似于
'0/RP0':['NCS1K4-CNTLR']
的条目。对于每个条目,我必须向值中添加另一个字符串。例如,添加
'OPERATIONAL'
会导致
'0/RP0':['NCS1K4-CNTLR','OPERATIONAL']
。我需要对完整的字典执行此操作,并有一个要附加的值列表

下面我有两本字典

new_dict =
{'0/RP0': ['NCS1K4-CNTLR'], '0/PM1': ['NCS1K4-2KW-AC'], '0/PM0': ['NCS1K4-2KW-AC'], '0/FT2': ['NCS1K4-FAN'], '0/FT0': ['NCS1K4-FAN'], '0/FT1': ['NCS1K4-FAN']}

new_dict_1=   
{'0/RP0': ['OPERATIONAL'], '0/PM1': ['OPERATIONAL'], '0/PM0': ['FAILED'], '0/FT2': ['OPERATIONAL'], '0/FT0': ['OPERATIONAL'], '0/FT1': ['OPERATIONAL']}
我希望输出如下所示

{'0/RP0': ['NCS1K4-CNTLR','OPERATIONAL'], '0/PM1': ['NCS1K4-2KW-AC','OPERATIONAL'], '0/PM0': ['NCS1K4-2KW-AC','OPERATIONAL'], '0/FT2': ['NCS1K4-FAN','OPERATIONAL'], '0/FT0': ['NCS1K4-FAN','FAILED'], '0/FT1': ['NCS1K4-FAN','OPERATIONAL']}

您可以使用
zip()
方法,但正如前面所提到的:Python中的字典是无序的,因此代码中可能还有一些地方需要更改

In [14]: my_dict = {'ak': ['av'], 'bk': ['bv']}

In [15]: my_list = ['a1v', 'b1v']

In [16]: for element in zip(my_dict, my_list):
    ...:     my_dict[element[0]].append(element[1])
    ...:     

In [17]: my_dict
Out[17]: {'ak': ['av', 'a1v'], 'bk': ['bv', 'b1v']}
不要被结果误导,它也可能是
{'ak':['av','b1v'],'bk':['bv','a1v']}

最有可能的情况是,您需要两个DICT,并用类似以下的东西将其压缩:

In [18]: my_dict = {'ak': ['av'], 'bk': ['bv']}

In [19]: my_dict_2 = {'ak': ['a1v'], 'bk': ['b2v']}

In [20]: for element in zip(my_dict, my_dict_2):
    ...:     my_dict[element[0]].append(my_dict_2[element[1]][0])
    ...:     

In [21]: my_dict
Out[21]: {'ak': ['av', 'a1v'], 'bk': ['bv', 'b2v']}

如果您有两个字典,一个带有列表,另一个带有要附加的字符串,则可以使用python dict.keys函数

dict_of_lists = {...}
dict_to_append ={...}
for key in dict_of_lists.keys():
    dict_of_lists[key].append(dict_of_keys[key])

如果第二个dict包含列表,您可能希望使用extent而不是append。

拾取注释,您的第二个dict可以很容易地与第一个dict合并:

dict1 = {'0/RP0': ['NCS1K4-CNTLR'], '0/PM1': ['NCS1K4-2KW-AC'], '0/PM0': ['NCS1K4-2KW-AC'], '0/FT2': ['NCS1K4-FAN'], '0/FT0': ['NCS1K4-FAN'], '0/FT1': ['NCS1K4-FAN']}

dict2 = {'0/RP0': ['OPERATIONAL'], '0/PM1': ['OPERATIONAL'], '0/PM0': ['FAILED'], '0/FT2': ['OPERATIONAL'], '0/FT0': ['OPERATIONAL'], '0/FT1': ['OPERATIONAL']}

for k in dict1.keys():
    if k in dict2:
        dict1[k].append(dict2[k][0])

print(dict1)
给出:

{'0/RP0': ['NCS1K4-CNTLR', 'OPERATIONAL'], '0/PM1': ['NCS1K4-2KW-AC', 'OPERATIONAL'], '0/PM0': ['NCS1K4-2KW-AC', 'FAILED'], '0/FT2': ['NCS1K4-FAN', 'OPERATIONAL'], '0/FT0': ['NCS1K4-FAN', 'OPERATIONAL'], '0/FT1': ['NCS1K4-FAN', 'OPERATIONAL']}

请注意,
dict2[k][0]
是附加的,否则我们将附加一个列表而不是字符串。

字典理解可能比循环更有效。下面的方法还将通过
if
语句检查键是否存在替换为
dict.get
默认值

dict1 = {'0/RP0': ['NCS1K4-CNTLR'], '0/PM1': ['NCS1K4-2KW-AC'], '0/PM0': ['NCS1K4-2KW-AC'], '0/FT2': ['NCS1K4-FAN'], '0/FT0': ['NCS1K4-FAN'], '0/FT1': ['NCS1K4-FAN']}

dict2 = {'0/RP0': ['OPERATIONAL'], '0/PM1': ['OPERATIONAL'], '0/PM0': ['FAILED'], '0/FT2': ['OPERATIONAL'], '0/FT0': ['OPERATIONAL'], '0/FT1': ['OPERATIONAL']}

dict1_new = {k: v + dict2.get(k, []) for k, v in dict1.items()}

# {'0/FT0': ['NCS1K4-FAN', 'OPERATIONAL'],
#  '0/FT1': ['NCS1K4-FAN', 'OPERATIONAL'],
#  '0/FT2': ['NCS1K4-FAN', 'OPERATIONAL'],
#  '0/PM0': ['NCS1K4-2KW-AC', 'FAILED'],
#  '0/PM1': ['NCS1K4-2KW-AC', 'OPERATIONAL'],
#  '0/RP0': ['NCS1K4-CNTLR', 'OPERATIONAL']}

字典是无序的;如何确定附录的顺序?您的列表应该是一个字典,使用与您的
新dict
相同的键,否则无法将列表元素绑定到字典值。如果我将列表作为具有相同键值的dict。你能告诉我密码吗。示例:{'0/RP0':['OPERATIONAL'],'0/PM1':['OPERATIONAL'],'0/PM0':['FAILED'],'0/FT2':['OPERATIONAL'],'0/FT0':['OPERATIONAL'],'0/FT1':['OPERATIONAL']}