簡體   English   中英

從詞典列表中生成單個詞典

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM