【问题标题】:How do I replace keys from a list of dictionaries with values from another dictionary?如何用另一个字典中的值替换字典列表中的键?
【发布时间】:2021-10-19 15:15:11
【问题描述】:

我有一个字典列表和一个字典。

list_of_dicts = [
{'AssetId':'1234',
 'CreatedById':'02i3s',
 'Billable__c': True},
{'AssetId':'4567',
 'CreatedById':'03j8t',
 'Billable__c':True}
]

dict1 = {
'AssetKey':'AssetId',
'SourceRowCreatedBy':'CreatedById',
'FlagBillable':'Billable__c'}

如果list_of_dicts 的键与dict 的值匹配,我基本上想用dict 的键替换list_of_dicts 的键。所以我的输出应该是这样的:

new_list_of_dicts = [
{'AssetKey':'1234',
 'SourceRowCreatedBy':'02i3s',
 'FlagBillable': True},
{'AssetKey':'4567',
 'SourceRowCreatedBy':'03j8t',
 'FlagBillable':True}
]

在@DYZ 的帮助下,上述问题得以解决。谢谢!

编辑: 现在我遇到了一个情况,我有一个看起来像这样的字典列表:

list_of_dicts = [
{'0123uvw': {'AssetId':'1234',
 'CreatedById':'02i3s',
 'Billable__c': True},
{'456xyz': {'AssetId':'4567',
 'CreatedById':'03j8t',
 'Billable__c':True}
]

我将如何遍历这些来更新它们?

任何帮助将不胜感激!我正在使用 python 3.9.7。如果我需要提供任何进一步的信息,请告诉我。谢谢。

【问题讨论】:

标签: python-3.x list dictionary


【解决方案1】:

首先,注意:不要使用dict 作为变量名。它是一个字典构造函数。因此,假设您的第二个字典名为 dict1

从反转开始:交换键和值以形成另一个字典。

dict2 = {v: k for k, v in dict1.items()}

现在,对于列表中的每个项目,在新字典中查找键:

[{dict2[k]: v for k,v in d.items()} for d in list_of_dicts]
# [{'AssetKey': '1234', 'SourceRowCreatedBy': '02i3s', 'FlagBillable': True}, 
# {'AssetKey': '4567', 'SourceRowCreatedBy': '03j8t', 'FlagBillable': True}]

【讨论】:

  • 我刚刚在我的帖子中添加了一个编辑。我不太确定如何循环使用一个充满字典条目的字典。今晚我将尝试自己解决这个问题,但只是想在那里发表评论。谢谢!
  • 我想我正在努力尝试将其纳入列表理解中。我对此很陌生,无法弄清楚如何在列表理解中以正确的顺序循环所有内容,但我意识到这是“pythonic”的方式。
最近更新 更多