类似于我的上一个问题:是否存在单行/ Pythonic(前者并不一定意味着后者,我知道)编写以下嵌套for循环的方法?
some_list = # list of dictionaries
for i in some_list:
for j in i['some_key']:
if j is in another_list:
i['another_key'] = True
我已经尝试了
import itertools
for i,j in itertools.product(some_list,i):
if j is in another_list:
i['another_key'] = True
但在转让之前,我已经获得了参考资料。错误,这是有道理的,我想。有什么建议?谢谢!
答案 0 :(得分:0)
这不是一个单行,但要实现你想要整齐清晰地做的事情:
for i in some_list:
i['another_key'] = any(j in another_list for j in i['some_key'])
或者,您可以防止i['some_key']
不在场:
for i in some_list:
i['another_key'] = any(j in another_list for j in i.get('some_key', []))
或反对i['some_key']
不能用例如:。
try:
i['another_key'] = any(j in another_list for j in i['some_key'])
except TypeError:
# whatever you want to do instead
另一方面,如果事实证明你的字典没有合适的密钥或价值不可迭代,你可能更愿意直接找到它!
我不知道您正在玩的数据代表什么,因此无法提出建议,但更好的变量名称可能会有所帮助。