Python 从具有相同键的多个字典中获取值

Python 从具有相同键的多个字典中获取值,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我想从下面给定的代码中获取Name的值和Salary的值 { "records": [ { "fieldName": "Name", "value": "Alex" }, { "fieldName&

我想从下面给定的代码中获取Name的值和Salary的值

    {
        "records": [
            {
                "fieldName": "Name",
                "value": "Alex"
            },
            {
                "fieldName": "Age",
                "value": "22"
            },
            {
                "fieldName": "Salary",
                "value": "235000.0"
            },
            {
                "fieldName": "Entry.Date",
                "value": "Sat Jan 02 00:00:00 GMT 2021"
            }]
        }

这假定字段只出现一次。如果没有,请删除冒号以获取包含所有值的列表


name,=[d['value'],如果d['fieldName']=='name'],则在您的字典['records']中为d
薪水,=[d['value'],如果d['fieldName']=='salary']

首先分析整个过程:

out = {o['fieldName']: o['value'] for o in obj['records']}                                                                                                                                                                                 
输出:

{'Name': 'Alex',
 'Age': '22',
 'Salary': '235000.0',
 'Entry.Date': 'Sat Jan 02 00:00:00 GMT 2021'}
Alex 235000.0
然后抓住你想要的:

name, salary = out['Name'], out['Salary']                                                                                           

我建议使用简单的
for
循环方法,因为列表理解需要对列表进行多次迭代:

data = {
        "records": [
            {
                "fieldName": "Name",
                "value": "Alex"
            },
            {
                "fieldName": "Age",
                "value": "22"
            },
            {
                "fieldName": "Salary",
                "value": "235000.0"
            },
            {
                "fieldName": "Entry.Date",
                "value": "Sat Jan 02 00:00:00 GMT 2021"
            }]
        }


name, salary = None, None
for record in data["records"]:
    if record.get("fieldName") == "Name":
        name = record.get("value")
    
    if record.get("fieldName") == "Salary":
        salary = record.get("value")
    
print(name, salary)
输出:

{'Name': 'Alex',
 'Age': '22',
 'Salary': '235000.0',
 'Entry.Date': 'Sat Jan 02 00:00:00 GMT 2021'}
Alex 235000.0

使用简单的理解方法

dct={
“记录”:[
{
“字段名”:“名称”,
“值”:“Alex”
},
{
“字段名”:“年龄”,
“值”:“22”
},
{
“字段名”:“工资”,
“值”:“235000.0”
},
{
“字段名”:“输入日期”,
“值”:“2021年1月2日星期六00:00:00 GMT”
}]
}
数据={name:zip格式的(名称、薪资)的薪资([d['value']表示dct中的d['records']如果d['fieldName']=='name'],[d['value']表示dct中的d['records']如果d['fieldName']=='salary']))
打印(数据)

您尝试过吗?你有什么问题?请参阅,以获取关于提出好问题的一些提示。谢谢@fsl。我发现这是最好的方法。谢谢。