Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 12, 2016 08:24:39

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Словарь

Угу.
Пока не придумал зачем ключам кортежи но буду иметь в виду!
Спасибо!



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#2 Апрель 12, 2016 09:19:03

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

Словарь

ZerG
Пока не придумал зачем ключам кортежи но буду иметь в виду!
Ну, предположим, есть у тебя массив данных, представляющих отчет о пинговании каких-то адресов: Ip-адрес, порт, время и пинг и ты их хочешь сгруппировать по адресу и порту, тогда кортеж (адрес, порт) вполне себе годный ключ словаря.



Офлайн

#3 Апрель 12, 2016 10:51:25

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

Словарь

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



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

Офлайн

#4 Апрель 12, 2016 11:27:38

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

Словарь

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)

Офлайн

#5 Апрель 12, 2016 11:59:58

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

Словарь

> Ха-ха-ха.

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

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

Молодец! Замечательный способ сделать из словаря список. Такое даже на говнокод не стыдно отправить.



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

Отредактировано Rodegast (Апрель 12, 2016 12:05:02)

Офлайн

#6 Апрель 12, 2016 12:17:35

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

Словарь

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

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

Сделай in.



Отредактировано py.user.next (Апрель 12, 2016 12:17:58)

Офлайн

#7 Апрель 12, 2016 12:32:14

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

Словарь

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

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

> Сделай in.

Сначала сделай что-бы вот это работало:

>>> d[List([1, 2, 3])]
Traceback (most recent call last):
  File "<input>", line 1, in <module>
KeyError: [1, 2, 3]



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

Офлайн

#8 Апрель 12, 2016 12:47:54

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

Словарь

Rodegast
Сначала сделай что-бы вот это работало:
Так у меня готовый вариант лежит ещё с того сообщения, я же знал, что ты не сможешь сделать.

Даю тебе ещё один шанс. :)



Офлайн

#9 Апрель 12, 2016 12:52:45

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

Словарь

Можешь выклаывать. Заниматься глупостями я даже не пытаюсь.



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

Офлайн

#10 Апрель 12, 2016 13:25:17

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

Словарь

>>> 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
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version