【问题标题】:Adding item to every dictionary in a list of nested dictionaries将项目添加到嵌套字典列表中的每个字典
【发布时间】:2020-10-20 11:26:56
【问题描述】:

我有一个列表,里面有嵌套的字典,比如下面的结构:

[
{'family': '',
  'given': '',
  'affiliation': [{'': ''}]},

 {'family': '',
  'given': '',
  'affiliation': [{'': ''}]},

 {'family': '',
  'given name': '',
  'localId': '',
  'affiliation': [{'': ''}]},

 {'family': '',
  'given name': '',
  'affiliation': [{'': ''}]}
]

我想在其中的每个嵌套字典中添加一个 id 字典,使得结构变为:

[
 {'id':'',
  'family': '',
  'given': '',
  'affiliation': [{'': ''}]},

 {'id':'',
  'family': '',
  'given': '',
  'affiliation': [{'': ''}]},

 {'id':'',
  'family': '',
  'given name': '',
  'localId': '',
  'affiliation': [{'': ''}]},

 {'id':'',
  'family': '',
  'given name': '',
  'affiliation': [{'': ''}]}
]

我尝试了以下代码,其中 tmp 是我的列表名称:

tmp.append({'id':df.id[0]})

导致:

[
{'family': '',
  'given': '',
  'affiliation': [{'': ''}]},

 {'family': '',
  'given': '',
  'affiliation': [{'': ''}]},

 {'family': '',
  'given name': '',
  'localId': '',
  'affiliation': [{'': ''}]},

 {'family': '',
  'given name': '',
  'affiliation': [{'': ''}]},
 {'id': '776'}
]

谁能建议如何解决这个问题,以便我能够在每个字典中添加 id

我更喜欢单行代码而不是循环,这样我就可以应用到我拥有这些嵌套字典的数据帧的每个单元格。

【问题讨论】:

  • for d in temp: d['id'] = '776'
  • 为此创建一个class 似乎是一个更好的解决方案?
  • for i, d in enumerate(temp): d['id'] = df.id[i].

标签: python dataframe dictionary


【解决方案1】:

只需循环列表项并添加新字段

l = [
  {'family': '',
    'given': '',
    'affiliation': [{'': ''}]},

  {'family': '',
    'given': '',
    'affiliation': [{'': ''}]},

  {'family': '',
    'given name': '',
    'localId': '',
    'affiliation': [{'': ''}]},

  {'family': '',
    'given name': '',
    'affiliation': [{'': ''}]}
]
for e in l:
  e['id'] = ''

【讨论】:

  • 我想避免由于问题中指定的原因而循环。 @rdas 的解决方案在这种情况下非常有效。
  • @Hanif 阅读代码 ...for d in temp: d['id'] = '776' 那里有一个循环 - 不是吗?
  • 是的,有。但我可以如我所说,单行解决方案会更好,因此我可以将其用作 lambda 函数以应用于我的数据帧的每个单元格。这就是我选择这个解决方案的原因。
【解决方案2】:

我认为您必须遍历您的字典列表并为每个字典添加“id”属性

for i in range(len(tmp)):
    tmp[i]['id'] = ''

【讨论】:

    【解决方案3】:

    试试这个:

    [i.update({'id':''}) for i in tmp]
    

    【讨论】:

      猜你喜欢
      • 2020-05-29
      • 1970-01-01
      • 2021-06-08
      • 1970-01-01
      • 2013-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-05-10
      • 2020-09-15
      相关资源
      最近更新 更多