Найти - Пользователи
Полная версия: Словарь
Начало » Python для новичков » Словарь
1 2 3 4 5
py.user.next
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
>>>

Этот способ не очень правильный, но и задание описано не очень правильно.
NK
Вот нашла у Лутца вот такой вариант

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

NK
action = state_list[state][obj]['action']
Это вроде красиво, но на практике редко используется так же, как и obj.attr1.attr2.attr4, потому что так зашивается структура данных в код. А когда её надо срочно поменять (добавить, убрать, перестроить), весь подобный код зацепляется, потому что расчитывает на ту начальную структуру данных.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB