Форум сайта python.su
857
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)
Офлайн
0
Вот нашла у Лутца вот такой вариант
>>> 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)
Офлайн
857
NKА зачем он .keys() вызывает? А потому что книжка старая. Сейчас минимальным считается питон 2.6, а в нём уже есть итератор по ключам словаря (это раньше не было).
Вот нашла у Лутца вот такой вариантstate = list(state_list.keys())[0]
NKЭто вроде красиво, но на практике редко используется так же, как и obj.attr1.attr2.attr4, потому что так зашивается структура данных в код. А когда её надо срочно поменять (добавить, убрать, перестроить), весь подобный код зацепляется, потому что расчитывает на ту начальную структуру данных.action = state_list[state][obj]['action']
Отредактировано py.user.next (Апрель 26, 2016 02:27:17)
Офлайн