如何在python中遍历字典列表,提取值并填充另一个数据字典

1cosmwyk  于 2022-12-02  发布在  Python
关注(0)|答案(1)|浏览(229)

我有一本字典目录,如下所示。

[
    {'name':['mallesh'],'email':['m@gmail.com']},
    {'name':['bhavik'],'ssn':['1000011']},
    {'name':['jagarini'],'email':['m@gmail.com'],'phone':['111111']},
    {'name':['mallesh'],'email':['m@gmail.com'],'phone':['1234556'],'ssn':['10000012']}
]

我想从这些字典中提取信息的基础上键,持有其信息在另一个字典作为。

xml_master_dict={'name':[],'email':[],'phone':[],'ssn':[]}

此处xml_master_dict应填写以下相应的关键信息。
在第一部词典中,我们有这样一段话:

{'name':['mallesh'],'email':['m@gmail.com']}

在xml_master_dict中仅使用当前值更新名称和电子邮件关键字,如果字典中不存在任何关键字,则应使用None填充。在这种情况下,phone和ssn将为None

以下是预期输出:
第一个

w6lpcovy

w6lpcovy1#

下面是使用for循环和字典的update方法来完成此操作的一种方法:

data = [
    {'name': ['mallesh'], 'email': ['m@gmail.com']},
    {'name': ['bhavik'], 'ssn': ['1000011']},
    {'name': ['jagarini'], 'email': ['m@gmail.com'], 'phone': ['111111']},
    {'name': ['mallesh'], 'email': ['m@gmail.com'], 'phone': ['1234556'], 'ssn': ['10000012']}
]

# Create an empty dictionary with keys for each field
xml_master_dict = {'name': [], 'email': [], 'phone': [], 'ssn': []}

# Loop through the list of dictionaries
for item in data:
    # Use the update method to add the values from the current dictionary
    # to the xml_master_dict, using None for any missing keys
    xml_master_dict.update({k: [v] for k, v in item.items()})

# Print the resulting xml_master_dict
print(xml_master_dict)

此代码将生成以下输出:

{'name': ['mallesh', 'bhavik', 'jagarini', 'mallesh'],
 'email': ['m@gmail.com', None, 'm@gmail.com', 'm@gmail.com'],
 'phone': [None, None, '111111', '1234556'],
 'ssn': [None, '1000011', None, '10000012']}

然后,您可以使用Pandas库中的pd.DataFrame函数,使用此字典创建DataFrame。例如:

import pandas as pd

# Create a DataFrame from the xml_master_dict
df = pd.DataFrame(xml_master_dict)

# Print the DataFrame
print(df)

此代码将生成以下输出:

name     email    phone       ssn
0  mallesh  m@gmail.com     None     None
1   bhavik       None     None  1000011
2 jagarini  m@gmail.com  111111     None
3  mallesh  m@gmail.com  1234556  10000012

相关问题