为什么在Python中使用列表理解时没有得到任何结果?

2024-06-26 13:34:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个字典列表,我想通过使用条件列表理解创建一个新的字典列表

字典列表的示例包括:

d1 = [{'id': '1', 'co': '1', 'w': '10'}, {'id': '5', 'co': '2', 'w':'60'}]
d2 = [{'id': '1', 'na': 'Bi', 'teac': ' D'}]

作为输出,所需输出为:

 d_new = [{'id': '1', 'co': '1', 'w': '10', 'na': 'Bi', 'teac': ' D'}]

我最初的方法是使用如下理解:

[d1.update({'na':r['na'],'teac':r['teac']}) for d in d1 for r in d2 if d['co'] == r['id']]

但是,我将[None, None]作为输出

有没有办法解决这个问题以获得所需的输出

只是一个快速更新:

我的意思是这个而不是下面的一个:

 [d.update({'na':r['na'],'teac':r['teac']}) for d in d1 for r in d2 if d['co'] == r['id']]

Tags: innoneid列表forif字典update
1条回答
网友
1楼 · 发布于 2024-06-26 13:34:03

首先,你的代码对于你的输出应该是什么毫无意义,不管怎样,对于你的问题的答案是[None,None]list comprehension返回一个包含你语句d1的返回的列表。update(某物),它是就地更新,不返回任何东西(None),循环运行两次,因为d1中有2项,d2中有1项(2*1)(也就是说,如果在末尾没有if语句,考虑它是否返回[None]),那么在列表中得到2个Nones检查结尾处d1的值,你会看到它已更改

相关问题 更多 >