python - 字典理解 - 不要生成具有空列表值的键/值对
问题描述
以下代码
k = 7
{ i: [j for j in range(10) if abs(i-j)==k] for i in range(10) }
生成以下值
{0: [7], 1: [8], 2: [9], 3: [], 4: [], 5: [], 6: [], 7: [0], 8: [1], 9: [2]}
有空列表的值。如何生成只有非空值的字典项?
{0: [7], 1: [8], 2: [9], 7: [0], 8: [1], 9: [2]}
解决方案
在 Python 3.8+ 中使用赋值表达式(PEP 572) ,它是专门为这种情况设计的(它避免了其他答案中提到的 2 个步骤或 2 个 for 循环):
k = 7
{ i: t for i in range(10) if (t:= [j for j in range(10) if abs(i-j)==k]) }
推荐阅读
- r - RStudio 项目是否存储任何临时数据?
- google-sheets - 当用户将新行添加到特定工作表时,它会自动将相同的行添加到另一个 Google 工作表
- c++ - 无括号循环内以逗号分隔的代码行
- python-3.x - 如何通过调用 Python 函数在 Robotframework 中运行 .vbs 文件?
- python - 如何使用 API 从谷歌日历中获取事件
- android - FragmentPagerAdapter 在 ViewPager 中不起作用
- python-3.x - 如何单击框以在页面底部显示更多行?
- dialogflow-es - 是否有可能以及如何使用对话流重定向到另一个网页?
- java - 如何在流中结合统计数据和映射器?
- r - 在 R-studio 中安装 arulesViz