为了账号安全,请及时绑定邮箱和手机立即绑定

如何在for循环和if语句中简化for循环?

如何在for循环和if语句中简化for循环?

湖上湖 2021-10-10 16:21:31
我可以将此代码缩短为 1-2 行吗?我已经尝试将它变成列表理解,但我不确定如果 for 循环之一使用字典键它会如何工作。for a in dict.keys():      for q in list:          if a in q:              dict[a].append(q)  这段代码可以很好地查找列表中的项目是否是字典的键之一,如果是,则将该项目存储为该字典键下的值,但我希望弄清楚是否可以进一步简化它。
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

最初我想提出以下建议:

{k: v for v in mylist for k in mydict if k in v}

但后来我注意到你实际上正在修改你的输入,这不是正在发生的事情。这实际上应该做同样的事情(我对输入做了一两个假设):

for key in mydict.keys():
    mydict[key].extend((i for i in mylist if key in i))

但一个不请自来的建议。代码片段确实不需要缩短。相反,它可以用更冗长和更具描述性的变量名称来引导读者阅读并帮助理解正在发生的事情。

在任何情况下,请不要使用变量名状dictlist那些已经使用内置型的构造,它真的是自讨苦吃,以重新分配给不同的对象(在大多数情况下,甚至如果仔细考虑和打算,我仍然建议不要这样做)。


查看完整回答
反对 回复 2021-10-10
?
万千封印

TA贡献1891条经验 获得超3个赞

如果你愿意,你可以把它变成一个列表理解,像这样:[my_dict[a].append(q) for a in my_dict for q in my_list if a in q],但是,正如你在评论中看到的,这是不推荐的,实际上可能更难阅读和理解。

循环用于迭代的内容并不重要。我花了这么长时间才明白forget 是按照它们在嵌套循环结构中的顺序编写的,而不是作为要计算的表达式反转。


查看完整回答
反对 回复 2021-10-10
  • 2 回答
  • 0 关注
  • 293 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信