Python-将字典中的列表解压缩为字典列表

时间:2019-06-13 09:39:40

标签: python list dictionary

我有一本包含列表的字典:

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

感谢您的回答。

1 个答案:

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