Python 在嵌套列表中创建字典

Python 在嵌套列表中创建字典,python,list,dictionary,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] =

有人能解释一下如何在列表中构建词典吗?例如,我有一本字典:

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)
但这是不对的。。。
这可能有点让人困惑,我相信它并没有那么优雅。如果这不是一个相关的问题,我很抱歉

你可以通过听写理解来做到这一点

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()}

我希望这能满足你的要求

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: []}]}
如果您只想将每个值中的每个项“转换”为具有空列表的单个元素dict,则可以执行以下操作:

A={'typeA':[12],'typeB':[12,13]}
对于A.values()中的lst:
对于i,枚举中的val(lst):
lst[i]={val:[]}
印刷品(A)
给出:

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

按照你最初的思路,你可能打算做一些类似的事情:

用于A.keys()中的键:
listFinal=[]
对于[键]中的值:
newDict={value:[]}
追加(newDict)
A[键]=列表最终

它给出了相同的输出

,让这个话题更深入一点,请分享您迄今为止所做的努力和出现的问题如果您的枚举如此复杂…创建对象以满足您的业务需要…编写代码将更容易…并且更容易维护未来的开发您想将第一个转换为第二个吗?到目前为止,您尝试了什么?这些值将来会被填充吗?否则我认为没有必要在列表中使用字典。您所缺少的只是第二个
for
循环(以及第一个循环)后的一行:
a[key]=[newDict]
谢谢您的帮助,这真的很有用。有一点警告:如果将
fromkeys
与空列表一起使用,则所有键都将使用相同的列表。这可能是不需要的。文档中也警告了这一点。例如,执行
A['typeB'][0][12]。追加(0)
也将
0
追加到键
13