给定两个字典列表,我想创建一个新的字典列表,其中新列表中的字典具有来自原始列表的键值对的组合。你知道吗
我在想象SQL中的左连接。你知道吗
下面是我的两个列表的示例:
DictList1 = [{workbookname: workbook1, groupid: id1, capabilityname: capability1},
{workbookname: workbook1, groupid: id1, capabilityname: capability2}
, ...]
DictList2 = [{groupid: id1, groupname: name1}
, {groupid: id2, groupname, name2}
, ...]
NewList = [{workbookname: workbook1, groupname: name1, capabilityname: capability1}
, {workbookname: workbook1, groupname: name1, capabilityname: capability2}
, ...]
所以呢
DictList1
中的每个字典DictList2
中搜索,直到在groupid
中找到匹配项。你知道吗NewList
。你知道吗这在Python中是可以做到的吗?你知道吗
要有效地执行此操作,首先需要将其中一个列表映射到按组id键控的字典:
现在可以从第二个列表生成输出:
我使用了一个鲜为人知的技巧,将两个字典组合成一个新的字典,其中
dict()
创建由groupid
值找到的字典的副本,然后使用d
作为关键字参数来更新副本。如果您发现难以阅读,请使用单独的函数:python3.5或更新版本有一个专用的合并语法
{**by_group.get(d['groupid'], {}), **d}
。你知道吗所有这些都假设
DictList2
中的groupid
值是唯一的,并且您希望在combined
中为DictList1
中的每个字典创建输出,即使DictList2
中没有匹配的groupid
值。你知道吗演示:
相关问题 更多 >
编程相关推荐