从字典列表生成单个字典

2024-06-26 13:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个方法,它接受字段名列表。在这个方法中,我进行了一个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}

Tags: 方法textnameapifields列表字典value
2条回答

这个班轮怎么样?你知道吗

output = dict((x['name'], x['text_value']) for x in fields)

它基本上通过字段循环,提取名称/文本/值对,然后从中构造dict。你知道吗

像这样的?你知道吗

>>> 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'}

相关问题 更多 >