以下代码
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/