Эта строка - ваша проблема
Pixels[x1] = y2
Во внутреннем l oop вы перезаписываете значение на каждом шаге, поэтому последнее значение, которое вы видите, равно 699
(но оно имело все значения от 0 до 698 до того момента, когда условие было выполнено). Вы можете сделать два измерения:
Pixels[x1] = list()
И затем во внутреннем l oop:
Pixels[x1].append(y2)
Всего:
Pixels = {}
for x1 in range(0, 1250):
Pixels[x1] = list()
for y2 in range(0, 700):
xy12 = disp.get_at((x1, y2))
if xy12[0] <= 3 and xy12[1] <= 3 and xy12[2] <= 3:
Pixels[x1].append(y2)
Или - если вы Вы в диковинном понимании (плюс он использует all(...)
):
Pixels = {x1:
[y2
for y2 in range(0, 700)
for xy12 in [disp.get_at((x1, y2))]
if (all(cond <= 3 for cond in xy12[0:2]))]
for x1 in range(0, 1250)}