我有一个场景,其中我有两个列表l1&;l2如下所述:
l1 = [{'app_id': 9833, 'state': 0}, {'app_id': 1036, 'state': 1}, {'app_id': 1039, 'state': 0},{'app_id': 1030, 'state': 0}]
l2 = [{'app_id': 9833, 'name': ABC}, {'app_id': 1036, 'name': CDE}, {'app_id': 1039, 'name': XYZ},{'app_id': 1030, 'name': JKL}]
我试图在这两个列表中检查app_id
是否在两个列表中都是公共的,如果是公共的,那么在第三个列表中也添加name
值,因此所需的输出应该是这样的
l3 = [{'app_id': 9833, 'name': ABC, 'state': 0}, {'app_id': 1036, 'name': CDE, 'state': 1}, {'app_id': 1039, 'name': XYZ, 'state': 0},{'app_id': 1030, 'name': JKL, 'state': 0}]
这就是我尝试过的,看起来这种方法是错误的
for key in l1:
temp=key['app_id']
for keynd in l2:
if keynd[app_id]==temp:
l3.append(keynd['name'])
有人能帮我解决这个问题吗
您的问题目前不明确:
搜索dict通常比迭代列表快,因此我将构建一个辅助映射},并构建只包含{}中存在的
app_id
=>^从l2生成{app_id
的l1
副本,然后从辅助映射中追加名称:它给出for
l3
:[{'app_id': 9833, 'state': 0, 'name': 'ABC'}, {'app_id': 1036, 'state': 1, 'name': 'CDE'}, {'app_id': 1039, 'state': 0, 'name': 'XYZ'}, {'app_id': 1030, 'state': 0, 'name': 'JKL'}]
,而不需要嵌套循环我假设名称也是字符串。 这应该起作用:
替代解决方案:使用dataframe合并它们:
输出:
相关问题 更多 >
编程相关推荐