Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2016 21:54:09

Shaman
Зарегистрирован: 2013-03-15
Сообщения: 1369
Репутация: +  88  -
Профиль   Отправить e-mail  

Словарь

ZerG
И к чему это в итоге приведет?
К адекватному дизайну.

Офлайн

#2 Апрель 14, 2016 02:31:59

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

Словарь

Rodegast
о этому и поддержки хеширования у изменяемых типов нет.
Её нет не потому, что она не должна быть, а потому, что для каждого случая это делается по-разному. И как раз для этого есть магический метод хеширования у всех объектов.

>>> obj = object()
>>> obj.__hash__
<method-wrapper '__hash__' of object object at 0xb74ca7a8>
>>>

Rodegast
Так в чём проблема? Мы ждём готовое решение!
Ты потянешь хоть что-нибудь? Ничего же не написал ни разу.



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

Офлайн

#3 Апрель 14, 2016 10:40:05

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2840
Репутация: +  186  -
Профиль   Отправить e-mail  

Словарь

> Ты потянешь хоть что-нибудь? Ничего же не написал ни разу.

Вот это и называется “Делать хорошую мину при плохой игре”. Короче py.user.next как всегда идёт лесом.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#4 Апрель 14, 2016 14:38:59

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

Словарь

У каждого вложенного объекта есть метод __hash__. И его можно всегда использовать, как угодно, он для того и сделан.



Офлайн

#5 Апрель 18, 2016 13:09:49

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

Словарь

Всем, привет!

Помогите решить проблему.
Есть словарь:

list = {
              'устал': {
                         'кровать': {'action': 'спать', 'new_state': 'бодрый'}
                        }
     }

есть ли возможность вытащить название ключа из словаря, чтобы потом передавать его в функцию в качестве параметра при инициализации начального состояния, например?
Вот что-то наподобие такого:
func(list.keys[0])
- это не работает, я знаю.

За ответ буду очень признательна.

Отредактировано NK (Апрель 18, 2016 13:19:05)

Офлайн

#6 Апрель 18, 2016 13:31:17

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Словарь

NK
Помогите решить проблему.
И в чем проблема то?
Словарь - это ассоциативный массив типа ключ: значение.
NK
есть ли возможность вытащить название ключа из словаря
что это значит вообще? Какие свойства словаря вы хотите использовать?



Офлайн

#7 Апрель 18, 2016 13:53:24

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

Словарь

FishHook
что это значит вообще? Какие свойства словаря вы хотите использовать?

Немного поясню ситуацию.
У меня есть конечный автомат, которому на вход подается исходное состояние и объект, если состояние ‘устал’ и объект ‘кровать’, действие ‘спать’, новое состояние ‘бодрый’.
Мне нужно написать тест для проверки, что автомат работает хорошо и переходы совершаются корректно. Для этого я пишу тест в котором задаю через словарь поведение конечного автомата.
list = {
'устал': {
'кровать': {'action': 'спать', 'new_state': 'бодрый'}
}
}

Что я хочу. Чтобы не прописывать руками каждый раз входное состояние и объект при инициализации автомата, я хочу брать эти значения из словаря. Тем самым меняя словарь, автоматически менять входные параметры во всех тестах:
Нет так
FMS = StateFSM( 'устал', 'кровать')

Мне сказали сделать примерно вот так. Но это не работает(

FMS = StateFSM(list.keys[0], lion_state_list[0].keys[0])

От меня так руководитель требует. Я не знаю, как это реализовать. Как из словаря взять название ключа и передать его в качестве параметра?

Пробовала через списки. Вот так тоже не подошло. Сказали не то.
states = [ 'устал']
objects = ['кровать']
list = {
                     states[0]: {
                         objects[0]: {'action': 'спать', 'new_state': 'голодный'}
                     }
                   }
FMS = StateFSM(states[0], objects[0])

Здесь на форуме я хочу понять: Как из словаря взять название ключа и передать его в качестве параметра и возможно ли это?
Я сильно извиняюсь, если не понятно объясняю.

И да вот так. Тоже не то, так как для одного состояния могут быть разные объекты, а для разных объектов в зависимости от состояния разные действия и новые состояния(
list = { states: 'устал', objects: 'кровать', 'action': 'спать', 'new_state': 'голодный'}             

Отредактировано NK (Апрель 18, 2016 14:00:10)

Офлайн

#8 Апрель 18, 2016 14:05:09

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

Словарь

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



Офлайн

#9 Апрель 18, 2016 14:38:45

r00tl3ss
Зарегистрирован: 2016-03-31
Сообщения: 25
Репутация: +  5  -
Профиль   Отправить e-mail  

Словарь

NK
И еще один момент, я бы не советовал переменной давать такое имя.

list

Отредактировано r00tl3ss (Апрель 18, 2016 14:39:20)

Офлайн

#10 Апрель 18, 2016 15:56:14

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

Словарь

py.user.next
Спасибо большое! работает!
Можете еще подсказать как вытащить название ключа из вложенного словаря? В данном случае ‘кровать’

state_list = {
              'устал': {
                         'кровать': {'action': 'спать', 'new_state': 'бодрый'}
                        }
     }

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version