[英]Generate single dictionary from a list of dictionaries
我有一个采用字段名称列表的方法。 在该方法中,我正在调用API以获取一条记录,其中将包含字段字典的列表。
API调用示例:
"fields": [
{
"datetime_value": "1987-02-03T00:00:00",
"name": "birth_date"
},
{
"text_value": "Dennis",
"name": "first_name"
},
{
"text_value": "Monsewicz",
"name": "last_name"
},
{
"text_value": "Male",
"name": "sex"
},
{
"text_value": "White",
"name": "socks"
}
]
我的方法结构看起来像contact(contact_id, contact_fields)
,其中contact_fields
看起来像['last_name', 'first_name']
我尝试创建的最终fields
字典看起来像(不担心顺序):
{
"last_name": "Monsewicz",
"first_name": "Dennis"
}
因此,基本上只生成一个字典,其中键是列表中每个字典的name
属性,但前提是该name
位于传递给方法的字段名称列表中。
我已经试过了:
"fields": {x: y for x, y in contact['fields'] if x in contact_fields}
像这样吗
>>> fields
[{'datetime_value': '1987-02-03T00:00:00', 'name': 'birth_date'},
{'name': 'first_name', 'text_value': 'Dennis'},
{'name': 'last_name', 'text_value': 'Monsewicz'},
{'name': 'sex', 'text_value': 'Male'},
{'name': 'socks', 'text_value': 'White'}]
>>> output = {}
>>> for field in fields:
... key = field.pop('name')
... _unused_key, value = field.popitem()
... output[key] = value
...
>>> output
{'birth_date': '1987-02-03T00:00:00',
'first_name': 'Dennis',
'last_name': 'Monsewicz',
'sex': 'Male',
'socks': 'White'}
一线如何?
output = dict((x['name'], x['text_value']) for x in fields)
它基本上遍历字段,提取名称/文本值对,然后从中构造字典。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.