python - 字典理解 - 不要生成具有空列表值的键/值对

标签 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]}

最佳答案

使用 Assignment Expression (PEP 572)在 Python 3.8+ 中,它是专门为这种情况设计的(它避免了其他答案中提到的 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]) }

关于python - 字典理解 - 不要生成具有空列表值的键/值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63476369/

相关文章:

python - 从linux命令输出中选择文件名

python - 绘制一天内具有不同时间戳和 datetime.time 格式的时间序列

python - 使用 gunicorn 时如何设置 django 测试服务器?

python - 使用 Django 从 HTML 模板执行 Python 命令

python - 运行 main() 项目文件的快捷方式

python - 为什么我无法在 SQLAlchemy 中针对我的 has Many 关系运行查询?

python - 根据条件连接列表中的元素

python - 如何检查 pandas 中是否缺少任何字符串

python - 正则表达式和组的交集

python - Plotly:如何为使用多条轨迹创建的图形设置调色板?