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