NK
Вот нашла у Лутца вот такой вариант
state = list(state_list.keys())[0]
А зачем он .keys() вызывает? А потому что книжка старая. Сейчас минимальным считается питон 2.6, а в нём уже есть итератор по ключам словаря (это раньше не было).
NK
action = state_list[state][obj]['action']
Это вроде красиво, но на практике редко используется так же, как и
obj.attr1.attr2.attr4, потому что так зашивается структура данных в код. А когда её надо срочно поменять (добавить, убрать, перестроить), весь подобный код зацепляется, потому что расчитывает на ту начальную структуру данных.