Python将字典中的列表解包为字典列表

2024-04-26 15:12:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一本字典,里面有一个列表:

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

谢谢你的回答。你知道吗


Tags: tokeyin功能hello列表forif
1条回答
网友
1楼 · 发布于 2024-04-26 15:12:58

因为您不是在复制字典,而是在使用旧的dict: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'}]

相关问题 更多 >