Вот элегантное решение, которое отслеживает как букву, так и число и форматирует их в ключ с помощью fstring.
x = 200
y = 202
# Create the dict first
res = {}
# Assign the letter to begin with
key_letter = 'a'
for i in range(0, 40):
if i != 0 and i % 10 == 0:
# Increment the letter since 10th element reached
key_letter = chr(ord(key_letter) + 1)
# Format the letter with the number
res[f'{key_letter}{i % 10 + 1}'] = (x, y)
if y != 202 + 9 * 84:
y += 84
else:
x += 100
y = y - 9 * 84
print(res)
Вывод:
{'a1': (200, 202), 'a2': (200, 286), 'a3': (200, 370), 'a4': (200, 454), 'a5': (200, 538), 'a6': (200, 622), 'a7': (200, 706), 'a8': (200, 790), 'a9': (200, 874), 'a10': (200, 958), 'b1': (300, 202), 'b2': (300, 286), 'b3': (300, 370), 'b4': (300, 454), 'b5': (300, 538), 'b6': (300, 622), 'b7': (300, 706), 'b8': (300, 790), 'b9': (300, 874), 'b10': (300, 958), 'c1': (400, 202), 'c2': (400, 286), 'c3': (400, 370), 'c4': (400, 454), 'c5': (400, 538), 'c6': (400, 622), 'c7': (400, 706), 'c8': (400, 790), 'c9': (400, 874), 'c10': (400, 958), 'd1': (500, 202), 'd2': (500, 286), 'd3': (500, 370), 'd4': (500, 454), 'd5': (500, 538), 'd6': (500, 622), 'd7': (500, 706), 'd8': (500, 790), 'd9': (500, 874), 'd10': (500, 958)}
Таким образом, вы не нужно поддерживать отдельную строку, чтобы отслеживать все буквы.