Найти - Пользователи
Полная версия: Словарь
Начало » Python для новичков » Словарь
1 2 3 4 5
Shaman
ZerG
И к чему это в итоге приведет?
К адекватному дизайну.
py.user.next
Rodegast
о этому и поддержки хеширования у изменяемых типов нет.
Её нет не потому, что она не должна быть, а потому, что для каждого случая это делается по-разному. И как раз для этого есть магический метод хеширования у всех объектов.

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

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

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

Помогите решить проблему.
Есть словарь:
list = {
              'устал': {
                         'кровать': {'action': 'спать', 'new_state': 'бодрый'}
                        }
     }

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

За ответ буду очень признательна.
FishHook
NK
Помогите решить проблему.
И в чем проблема то?
Словарь - это ассоциативный массив типа ключ: значение.
NK
есть ли возможность вытащить название ключа из словаря
что это значит вообще? Какие свойства словаря вы хотите использовать?
NK
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': 'голодный'}             
py.user.next
NK
есть ли возможность вытащить название ключа из словаря
>>> d = {1: 2, 3: 4}
>>> 
>>> k = tuple(d)[0]
>>> k
1
>>> a, b = tuple(d)
>>> a, b
(1, 3)
>>>
r00tl3ss
NK
И еще один момент, я бы не советовал переменной давать такое имя.
list
NK
py.user.next
Спасибо большое! работает!
Можете еще подсказать как вытащить название ключа из вложенного словаря? В данном случае ‘кровать’

state_list = {
              'устал': {
                         'кровать': {'action': 'спать', 'new_state': 'бодрый'}
                        }
     }
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