在嵌套列表中创建字典

时间:2020-02-16 16:04:26

标签: python list dictionary

有人可以解释如何在列表中构造字典吗?例如,我有这本字典:

A = {'typeA': [12], 'typeB': [12, 13]} 

我想得到这个:

A = {'typeA': [{12: []}], 'typeB': [{12: []}, {13: []}]}

我已经尝试过这样的事情:

listFinal = []
for key in A.keys
---- newDict = {}
---- for value in A[key]:
--------- newDict[value] = []
newDict[key].append(value)

但这是不对的... 这可能会有点令人困惑,我认为那不是那么优雅。很抱歉,如果这不是一个相关的问题。

3 个答案:

答案 0 :(得分:0)

您可以通过dict理解做到这一点

a = {key: [{v: []} for v in A[key]] for key in A.keys()}

# outout {'typeA': [{12: []}], 'typeB': [{12: []}, {13: []}]}

另一个版本

a = {key: [{v: []} for v in value] for key, value in A.items()}

答案 1 :(得分:0)

我希望这能满足您的要求

A = {'typeA': [12], 'typeB': [12, 13]}
result = {}
for item in A.items():
    result[item[0]] = [dict.fromkeys(item[1], [])]
print(result)
# {'typeA': [{12: []}], 'typeB': [{12: [], 13: []}]}

答案 2 :(得分:0)

如果您只想将每个中的每个 item “转换”为带有空列表的单元素字典,则可以执行以下操作:

A = {'typeA': [12], 'typeB': [12, 13]}

for lst in A.values():
    for i, val in enumerate(lst):
        lst[i] = {val: []}

print(A)

礼物:

{'typeA': [{12: []}], 'typeB': [{12: []}, {13: []}]}

遵循您最初的想法,您可能会想要类似以下内容:

for key in A.keys():
    listFinal = []
    for value in A[key]:
        newDict = {value: []}
        listFinal.append(newDict)
    A[key] = listFinal

哪个给出相同的输出