Общая идея использования dict хороша, но лучшая конкретная реализация, вероятно, выглядит примерно так:
def pick_one(prompt, **kwds):
while True:
x = raw_input(prompt)
if x in kwds:
return kwds[x]
else:
print 'Please choose one of: ',
for k in sorted(kwds): print k,
print
Используется, например, как:
print pick_one('which list would you like me to print?',
list1 = ['cat', 'dog', 'juice']
list2 = ['skunk', 'bats', 'pogo stick'])
Дело в том, что, когда вы просите пользователя выбрать одну из ограниченного числа возможностей, вы всегда хотите проверить, чтобы выбор был одной из них (это в конце концов легко ошибиться и т. д.) и, если нет, точно подсказать (предоставив список доступных вариантов) и дать пользователю еще один шанс.
Все виды уточнений (например, с максимальным количеством попыток, после которых вы решаете, что пользователь просто не может набрать и выбрать один случайным образом ;-), оставляются как (не слишком сложно, но и не слишком интересно; -) упражнения для читателя.