2013-03-31 1 views
1

Я пытаюсь создать простой словарь каждой буквы с последующим номером (от 1-26), например: {'a': 1, 'b': 2, 'c': 3, ...}. Я хотел попробовать использовать словарь понимание, чтобы сделать это, так что я сделал:Ошибка определения Dict

from string import lowercase 
d = {s:i for s in lowercase for i in range(1, 27)} 

Однако это приводит: {'a': 26, 'b': 26, 'c': 26, ...}. Я думаю, это происходит потому, что он выполняет итерацию по каждому значению в нижнем регистре, присваивая его 1, затем 2, затем 3 (для каждого значения), заканчивающийся на 26. Есть только 26 клавиш, потому что, поскольку это словарь, у него не будет двух ключей того же письма (поэтому он перезаписывает все из них до 26 в конце). Я не уверен, как это исправить, поэтому, если бы я мог получить руководство относительно того, как это сделать на самом деле, это было бы здорово.

Я получил его для работы с использованием dict() и zip(): dict(zip(lowercase, range(1, 27))). Однако я хочу знать, как это сделать, используя понимание словаря. Благодаря!

ответ