我有一本包含列表的字典:
d = {'A': [1, 2, 3], 'B': 'hello'}
我想将其打包成这样的字典列表:
l = [{'A': 1, 'B': 'hello'},
{'A': 2, 'B': 'hello'},
{'A': 3, 'B': 'hello'}]
我尝试了以下功能:
def unpack_dict(dict_to_unpack):
unpacked_dicts = []
for key in dict_to_unpack:
if type(dict_to_unpack[key]) is list:
for value in dict_to_unpack[key]:
temp_dict = dict_to_unpack
temp_dict[key] = value
unpacked_dicts.append(temp_dict)
return unpacked_dicts if unpacked_dicts else dict_to_unpack
但是我得到的结果却相反:
[{'A': 3, 'B': 'hello'},
{'A': 3, 'B': 'hello'},
{'A': 3, 'B': 'hello'}]
感谢您的回答。
答案 0 :(得分:1)
因为您不是在复制字典,而是使用旧的字典:temp_dict = dict_to_unpack
您可以使用此代码执行所需的操作:
from copy import copy
d = {'A': [1, 2, 3], 'B': 'hello'}
result = []
for i in d['A']:
dct = copy(d)
dct['A'] = i
result.append(dct)
print(result)
[{'A': 1, 'B': 'hello'}, {'A': 2, 'B': 'hello'}, {'A': 3, 'B': 'hello'}]