如何从另一个键Python的值创建新键

问题描述 投票:0回答:4

我有一个类似于以下内容的词典列表:

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)

但是那只分配了键值,不确定如何将其与其他键/值一起推入新的字典。

python list dictionary key-value
4个回答
0
投票
>>> [{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'}}]

0
投票
new_data = []
for index, my_dict in enumerate(data):
    key = my_dict['ID']
    del my_dict['ID']
    new_data.append({key:data[index]})

0
投票

要添加其他值,您只需要创建一个新的字典,如下所示:

new_data.append( key:{
'name':my_dict['name']
'Date':my_dict['date']
}

您也不需要设置'key'变量,只需使用'my_dict ['ID']'


0
投票

您可以尝试使用此列表理解:

[{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)
© www.soinside.com 2019 - 2024. All rights reserved.