首页 > 解决方案 > 基于现有字典python创建新字典

问题描述

我有两个字典如下

    d1 = {
'k1':[4,31,21],
'k2':[31,41,51],
'k3':[91,10,111]
}

d2 = {
'l1':11,
'l2':'21',
'l3':'31',
'l4':41
}

我想在以下条件下返回一个新字典

对于上述情况,我需要返回以下 d3 字典

d3 = { k1=[l2,l3],k2=[l3,l4]}

这是我尝试过的

  d3={}
  
  for key, val in d1.items():
    for x in val:

        if str(x) in d2:
            tmp = new_dict[str(x)]
            lst = d3[key] if key in d3 else list()
            lst.append(tmp)
            d3[key] = lst

标签: pythonpython-3.x

解决方案


如果你真的想,你可以把它变成一个表情。注意:这要求所有列表值d1都是整数。

d = {k3: v3 for k3, v3 in ((k1, [k2 for k2, v2 in d2.items() if int(v2) in v1])
    for k1, v1 in d1.items()) if v3}
# {'k1': ['l2', 'l3'], 'k2': ['l3', 'l4']}

首先,您为您需要的项目创建一个生成器,其中k1键来自d1哪里以及您使用列表推导创建值的位置。因为您可能会得到一个想要删除的空列表,所以我们使用元组生成器。只有当我们确定列表不为空时,我们才会将其添加到最终字典中。


推荐阅读