Найти - Пользователи
Полная версия: Словарь
Начало » Python для новичков » Словарь
1 2 3 4 5
ZerG
Угу.
Пока не придумал зачем ключам кортежи но буду иметь в виду!
Спасибо!
FishHook
ZerG
Пока не придумал зачем ключам кортежи но буду иметь в виду!
Ну, предположим, есть у тебя массив данных, представляющих отчет о пинговании каких-то адресов: Ip-адрес, порт, время и пинг и ты их хочешь сгруппировать по адресу и порту, тогда кортеж (адрес, порт) вполне себе годный ключ словаря.
Rodegast
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
py.user.next
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]
>>>
Rodegast
> Ха-ха-ха.

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

> Лови ещё одну, я даже не менял ничего

Молодец! Замечательный способ сделать из словаря список. Такое даже на говнокод не стыдно отправить.
py.user.next
Rodegast
Когда поймёшь что изменяемые типы данных нельзя хешировать, тогда и поговорим.
А ты не понимаешь, почему in не работает? Так можно сделать, чтобы работал.

Rodegast
Такое даже на говнокод не стыдно отправить.
Ну, ты два раза пропёрся уже: сначала говорил, что их невозможно ключами делать; потом - что если и можно (ха-ха), то это бесполезно.

Сделай in.
Rodegast
> сначала говорил, что их невозможно ключами делать; потом - что если и можно (ха-ха), то это бесполезно.

Нет. Я говорил и сейчас говорю что сделать ключь из списка нельзя и по этому все твои потуги бесполезны

> Сделай in.

Сначала сделай что-бы вот это работало:
>>> d[List([1, 2, 3])]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: [1, 2, 3]
py.user.next
Rodegast
Сначала сделай что-бы вот это работало:
Так у меня готовый вариант лежит ещё с того сообщения, я же знал, что ты не сможешь сделать.

Даю тебе ещё один шанс. :)
Rodegast
Можешь выклаывать. Заниматься глупостями я даже не пытаюсь.
py.user.next
>>> 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
>>>
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