Назначение словаря как атрибута класса - PullRequest
0 голосов
/ 02 августа 2020

У меня есть класс Itinerary с двумя атрибутами: destinations и startTime

Существует равный шанс между двумя маршрутами (opt1 и opt2) для destinations, который оба словаря с адресами назначения в качестве ключей и днем ​​посещения (0,1, ... n) в качестве значений.

Существует также равная вероятность, что startTime будет datetime(2020,1,1,12,0,0) и datetime(2020,1,1,9,0,0)

Вот мой код:

class Itinerary:
    def __init__(self, destinations, startTime):
        self.destinations = np.random.choice(list(destinations), p = list(destinations.values()))
        self.startTime = np.random.choice(list(startTime), p = list(startTime.values()))
                
destinations = { opt1 : 0.5, opt2 : 0.5 }

startTime = { datetime(2020,1,1,12,0,0) : 0.5, datetime(2020,1,1,9,0,0) : 0.5 }

d = Itinerary(destinations, startTime)

Но я получаю сообщение об ошибке: TypeError: unhashable type 'dict'

Как я могу назначить словарь как атрибут класса? У меня такое чувство, что это как-то связано с np.random.choice в функции, но я этого не понял.

1 Ответ

0 голосов
/ 02 августа 2020

Я разобрался, как это сделать. Спасибо всем, кто помог.

class Itinerary:
    def __init__(self, destinations, startTime):
        self.destinations = np.random.choice((destinations), p = prob)
        self.startTime = np.random.choice(list(startTime), p = list(startTime.values()))
                
destinations = [ opt1, opt2 ]
prob = [ 0.5, 0.5 ]
startTime = { datetime(2020,1,1,12,0,0) : 0.5, datetime(2020,1,1,9,0,0) : 0.5 }

d = Itinerary(destinations, startTime)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...