Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 18, 2016 16:07:44

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Словарь

NK
как вытащить название ключа из вложенного словаря?
>>> d = {1: {2: 3}, 4: {5: 6}}
>>> 
>>> k = tuple(d)[0]
>>> k
1
>>> k = tuple(d[k])[0]
>>> k
2
>>> 
>>> tuple(d[tuple(d)[0]])[0]
2
>>>

Этот способ не очень правильный, но и задание описано не очень правильно.



Отредактировано py.user.next (Апрель 18, 2016 16:09:49)

Офлайн

#2 Апрель 24, 2016 18:40:20

NK
Зарегистрирован: 2016-04-18
Сообщения: 7
Репутация: +  0  -
Профиль   Отправить e-mail  

Словарь

Вот нашла у Лутца вот такой вариант

>>> state_list = {
                     'устал': {
                         'кровать': {'action': 'спать', 'new_state': 'бодрый'}
                     }
                   }
>>> state = list(state_list.keys())[0]
>>> obj = list(state_list[state].keys())[0]
>>> action = state_list[state][obj]['action']
>>> state
устал
>>> obj
кровать

Отредактировано NK (Апрель 24, 2016 18:44:50)

Офлайн

#3 Апрель 26, 2016 02:25:05

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10010
Репутация: +  857  -
Профиль   Отправить e-mail  

Словарь

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

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



Отредактировано py.user.next (Апрель 26, 2016 02:27:17)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version