Форум сайта python.su
61
Угу.
Пока не придумал зачем ключам кортежи но буду иметь в виду!
Спасибо!
Офлайн
568
ZerGНу, предположим, есть у тебя массив данных, представляющих отчет о пинговании каких-то адресов: Ip-адрес, порт, время и пинг и ты их хочешь сгруппировать по адресу и порту, тогда кортеж (адрес, порт) вполне себе годный ключ словаря.
Пока не придумал зачем ключам кортежи но буду иметь в виду!
Офлайн
186
py.user.nextОчередной бесполезняк:
>>> class List(list): … def __hash__(self): … return id(self)
>>> class List(list): ... def __hash__(self): ... return id(self) ... ... >>> d = {List([1, 2, 3]): 1, List([4, 5, 6]): 2} >>> d[List([1, 2, 3])] Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: [1, 2, 3] >>> List([1, 2, 3]) in d False
Офлайн
857
RodegastХа-ха-ха.
Списков в ключе быть не может по определению
RodegastЛови ещё одну, я даже не менял ничего
Очередной бесполезняк:
>>> class List(list): ... def __hash__(self): ... return id(self) ... >>> d = {List([1, 2, 3]): 1, List([4, 5, 6]): 2} >>> d {[1, 2, 3]: 1, [4, 5, 6]: 2} >>> >>> for i in d: ... if i == [1, 2, 3]: ... i.pop() ... 3 >>> d {[1, 2]: 1, [4, 5, 6]: 2} >>> >>> for i in d: ... print(i, '->', d[i]) ... [1, 2] -> 1 [4, 5, 6] -> 2 >>> >>> sum(d, []) [1, 2, 4, 5, 6] >>>
Отредактировано py.user.next (Апрель 12, 2016 11:33:42)
Офлайн
186
> Ха-ха-ха.
Иди на ликбез матчасть учить. Когда поймёшь что изменяемые типы данных нельзя хешировать, тогда и поговорим.
> Лови ещё одну, я даже не менял ничего
Молодец! Замечательный способ сделать из словаря список. Такое даже на говнокод не стыдно отправить.
Отредактировано Rodegast (Апрель 12, 2016 12:05:02)
Офлайн
857
RodegastА ты не понимаешь, почему in не работает? Так можно сделать, чтобы работал.
Когда поймёшь что изменяемые типы данных нельзя хешировать, тогда и поговорим.
RodegastНу, ты два раза пропёрся уже: сначала говорил, что их невозможно ключами делать; потом - что если и можно (ха-ха), то это бесполезно.
Такое даже на говнокод не стыдно отправить.
Отредактировано py.user.next (Апрель 12, 2016 12:17:58)
Офлайн
186
> сначала говорил, что их невозможно ключами делать; потом - что если и можно (ха-ха), то это бесполезно.
Нет. Я говорил и сейчас говорю что сделать ключь из списка нельзя и по этому все твои потуги бесполезны 
> Сделай in.
Сначала сделай что-бы вот это работало:
>>> d[List([1, 2, 3])] Traceback (most recent call last): File "<input>", line 1, in <module> KeyError: [1, 2, 3]
Офлайн
857
RodegastТак у меня готовый вариант лежит ещё с того сообщения, я же знал, что ты не сможешь сделать.
Сначала сделай что-бы вот это работало:
Офлайн
186
Можешь выклаывать. Заниматься глупостями я даже не пытаюсь.
Офлайн
857
>>> class List(list): ... def __hash__(self): ... return hash(tuple(self)) ... >>> d = {List([1, 2, 3]): 1, List([4, 5, 6]): 2, List([3, 2, 1]): 3} >>> >>> d[List([1, 2, 3])] 1 >>> List([1, 2, 3]) in d True >>> List([1, 2, 4]) in d False >>> d[List([3, 2, 1])] 3 >>>
Офлайн