向列表中的每个字典追加

2024-09-30 22:25:08 发布

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

我有一个字典对象列表:

[{u'ID': 46757,
  u'currentenddate': u'09/30/2016',
  u'name': u'Project A',
  u'projstartdate': u'05/01/2016'},
 {u'ID': 46625,
  u'currentenddate': u'07/15/2016',
  u'name': u'Project B',
  u'projstartdate': u'05/02/2016'},
 {u'ID': 47100,
  u'currentenddate': u'08/02/2016',
  u'name': u'Project C',
  u'projstartdate': u'06/01/2016'}]

我想在所有字典项后面附加一个新字段client_id,结果是:

[{u'ID': 46757,
  u'currentenddate': u'09/30/2016',
  u'name': u'Project A',
  u'projstartdate': u'05/01/2016'},
  u'client_id': u'12398'},
 {u'ID': 46625,
  u'currentenddate': u'07/15/2016',
  u'name': u'Project B',
  u'projstartdate': u'05/02/2016'},
  u'client_id': u'12398'},
 {u'ID': 47100,
  u'currentenddate': u'08/02/2016',
  u'name': u'Project C',
  u'projstartdate': u'06/01/2016'}
  u'client_id': u'12398'}]

client_id对于所有字典项将保持不变。我知道我可以使用for循环和dict['client_id'] = id实现结果,但是代码不再是矢量化的。是否有一个pythonic方法来附加到列表中的每个dict项?你知道吗


更新:

感谢您关于列表理解和for循环的生动对话。我将测试这两种方法,并根据我的情况使用两种方法中速度较快的一种。另外,接下来,我将在我的问题中明确定义“向量化”和“pythonic”的含义,所以我们都站在同一个角度(谢谢,@Adam Smith)。你知道吗


Tags: 对象方法代码nameprojectclientid列表
2条回答

像这样的东西可以达到目的。你知道吗

result = [dict(data, client_id='') for data in list_of_dicts]

一个python3.5解决方案,展示了新的dict解包。你知道吗

[{**dict_element, **{u'client_id':u'12398'}} for dict_element in your_list]

检查this。你知道吗

演示

>>> your_list = [{u'ID': 46757,
...   u'currentenddate': u'09/30/2016',
...   u'name': u'Project A',
...   u'projstartdate': u'05/01/2016'},
...  {u'ID': 46625,
...   u'currentenddate': u'07/15/2016',
...   u'name': u'Project B',
...   u'projstartdate': u'05/02/2016'},
...  {u'ID': 47100,
...   u'currentenddate': u'08/02/2016',
...   u'name': u'Project C',
...   u'projstartdate': u'06/01/2016'}]
>>> 
>>> from pprint import pprint
>>> pprint([{**dict_element, **{u'client_id':u'12398'}} for dict_element in your_list])
[{'ID': 46757,
  'client_id': '12398',
  'currentenddate': '09/30/2016',
  'name': 'Project A',
  'projstartdate': '05/01/2016'},
 {'ID': 46625,
  'client_id': '12398',
  'currentenddate': '07/15/2016',
  'name': 'Project B',
  'projstartdate': '05/02/2016'},
 {'ID': 47100,
  'client_id': '12398',
  'currentenddate': '08/02/2016',
  'name': 'Project C',
  'projstartdate': '06/01/2016'}]

相关问题 更多 >