Python 从具有相同键的多个字典中获取值
我想从下面给定的代码中获取Name的值和Salary的值Python 从具有相同键的多个字典中获取值,python,python-3.x,list,dictionary,Python,Python 3.x,List,Dictionary,我想从下面给定的代码中获取Name的值和Salary的值 { "records": [ { "fieldName": "Name", "value": "Alex" }, { "fieldName&
{
"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。我发现这是最好的方法。谢谢。