我有一个类似于以下内容的词典列表:
data = [{'Name': 'Paul', 'Date': '20200412', 'ID': '1020'}, {'Name': 'Frank', 'Date': '20200413', 'ID': '1030'}, {'Name': 'Anna', 'Date': '20200414', 'ID': '1040'}]
我需要创建一个新的词典列表,其中ID的值为键,而值是另一本具有与此特定ID关联的键/值的字典。这是所需的输出:
new_data = [{'1020': {'Name': 'Paul', 'Date': '20200412'}},
{'1030': {'Name': 'Frank', 'Date': '20200413'}},
{'1040': {'Name': 'Anna', 'Date': '20200414'}}]
我尝试过:
for index, my_dict in enumerate(data):
new_data = []
key = my_dict['ID']
new_data.append(key)
但是那只分配了键值,不确定如何将其与其他键/值一起推入新的字典。
>>> [{i['ID']: {k:v for k,v in i.items() if k != 'ID'}} for i in data]
[{'1020': {'Name': 'Paul', 'Date': '20200412'}},
{'1030': {'Name': 'Frank', 'Date': '20200413'}},
{'1040': {'Name': 'Anna', 'Date': '20200414'}}]
new_data = []
for index, my_dict in enumerate(data):
key = my_dict['ID']
del my_dict['ID']
new_data.append({key:data[index]})
要添加其他值,您只需要创建一个新的字典,如下所示:
new_data.append( key:{
'name':my_dict['name']
'Date':my_dict['date']
}
您也不需要设置'key'变量,只需使用'my_dict ['ID']'
您可以尝试使用此列表理解:
[{x["ID"]: {k: v for k, v in x.items() if k != "ID"}} for x in data]
[将ID
分配为字典的父键,并在字典理解内从子字典中过滤出ID
键
简单的循环方法也可能看起来像这样:
result = []
for x in data:
dic = {x["ID"]: {}}
for k, v in x.items():
if k != "ID":
dic[x["ID"]][k] = v
result.append(dic)