
Zart
16.07.2016
13:26:05
а. стоп. перебор аттрибутов инстанса..
не, весь код - бреда кусок
что ты пытаешься сделать вообще?

Aleksey
16.07.2016
13:27:07

Google

Темный
16.07.2016
13:27:38
в любом случае искать максимум проще через max()
понял тебя, но я даже не знаю что тако лямбда на текущем уровне знаний... поэтому хотелось бы через цикл перебора найти. А так?
max_key = ''
max_value = 0
for key in dic:
if dic[key] > max_value:
max_key = key
max_value = dic[key]

Zart
16.07.2016
13:28:47

Aleksey
16.07.2016
13:29:20

Zart
16.07.2016
13:30:03
а что мешает поправить sql чтобы возвращал нули сразу вместо нуллов

Aleksey
16.07.2016
13:30:39

Zart
16.07.2016
13:31:33
for row in data:
for key, val in vars(row).items():
if val is None:
setattr(row, key, 0)
есть и другие варианты

Aleksey
16.07.2016
13:35:02

Zart
16.07.2016
13:35:10
выкинь джангу

Aleksey
16.07.2016
13:35:27

Zart
16.07.2016
13:35:37
эт такая шутка с долей шутки

Aleksey
16.07.2016
13:36:01

Google

Темный
16.07.2016
13:38:44
for key in dic:
if dic[key] > max_value:
max_key = key
max_value = dic[key]
так это вроде работает, но сам ключ не записывается в переменную

Zart
16.07.2016
13:39:39
код выглядит верно
подобные вещи забывают учесть крайние случаи, например когда dic пуст

Темный
16.07.2016
13:41:48
И правда, появился пробел в словаре
понял где ошибка, нужно прочесть строки из файла что бы они собрались в список
with open('D:/proje/python/file 2/text.txt', 'r') as a:
for line in a:
data_line += [line.strip().lower().split()]
это приводит к матрице, а как сделать что бы без вложенностей?

Zart
16.07.2016
13:51:02
data_line=[] пропущено?

Темный
16.07.2016
13:51:19
да, опустил

Zart
16.07.2016
13:51:20
+= заменить на data_line.extend( ... )
+= на списке - это аналог аппенда, добавления элемента
екстенд же добавляет список к концу списка

Темный
16.07.2016
13:53:58
каеф, заработало. Спасибо!
а. чорт. Надо попутно еще сравнивать лексикографически если максимальных значений несколько и вывести первое из них...
dic = {....}
max_key = ''
max_value = 0
for key in dic:
if dic[key] > max_value:
max_key = key
max_value = dic[key]
как еще можно ввести лексикографическое сравнение ключей? например если
'cat': 13, 'zoo': 13
, то обрабатывалось певрое?

Zart
16.07.2016
14:10:49
т.е. ты хочешь сравнивать и значения и ключи?
и в случае равенства чтобы какой-то ключ выигрывал?

Темный
16.07.2016
14:11:15
если значение равно, то нужно сравнить еще и ключи

Zart
16.07.2016
14:12:40
меням строки с max_key и max_value на max_kv = (0, '')
меняем сравнение на
if (dic[key], key) > max_kv:
max_kv = dic[key], key
во. сравнение туплов идёт поэлементно. если первый элемент будет больше, то тупл выигрывает сразу (т.е. если значение больше)
если же равны, то сравниваются следующие элементы попарно

Виктор
16.07.2016
14:14:31
Привет, ребят!

Google

Zart
16.07.2016
14:14:40
max(data, key=lambda i:(i[1], i[0]))
в этом чате коты учат собак обращению со змеями

Виктор
16.07.2016
14:18:18
Хах, мне это и надо)
Я запутался что такое декораторы...

Zart
16.07.2016
14:19:10
это просто синтаксический сахар для вызова функции с аргументом класса/функции/метода

Темный
16.07.2016
14:19:32

Zart
16.07.2016
14:20:40
def blah():
...
blah = wrapper1(blah)
blah = wrapper2(arguments)(blah)
->
@wrapper2(arguments)
@wrapper1
def blah():
...
какого множества? это туплы

Виктор
16.07.2016
14:21:25
Спасибо !
Можно ещё просьбу? Киньте задачек для начального уровня и по нарастанию)

Zart
16.07.2016
14:22:55
вон, тут половина новичков на всяких степиках тусит
https://stepic.org/ и иже с ними

Zart
16.07.2016
14:26:50
нормальный годный юникод

Темный
16.07.2016
14:29:32

Zart
16.07.2016
14:30:07
ну
max_value, max_key = max_kv
или item = max_kv[1], max_kv[0]
вообще надо бы поименовать max_vk скорее, чтобы точнее отразить суть

Sergey
16.07.2016
14:32:38

Темный
16.07.2016
14:33:20

Google

Zart
16.07.2016
14:36:10
reversed(max_kv) было бы кошернее, не стань оно генератором в тройке

Темный
16.07.2016
14:36:17
интересно, если тупл не трогать, то выводится
11 foo
, если сделать срез или пример с item, то
'foo', 11

Zart
16.07.2016
14:37:02
print(*reversed(max_kv))

Темный
16.07.2016
14:40:43
вплане, что тип меняется или не меняется

Zart
16.07.2016
14:41:52
?
про что "это"?

Admin
ERROR: S client not available

Темный
16.07.2016
14:42:08
интересно, если тупл не трогать, то выводится
11 foo
, если сделать срез или пример с item, то
'foo', 11

Zart
16.07.2016
14:42:59
>>> t = 1, 'foo'
>>> print(t)
(1, 'foo')
я не знаю как у тебя вышло 11 foo

Andrey
16.07.2016
14:43:00
reversed(max_kv) было бы кошернее, не стань оно генератором в тройке
А чем оно является в двойке?
Python 2.7.11 (v2.7.11:6d1b6a68f775, Dec 5 2015, 20:32:19) [MSC v.1500 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.
>>> foo = (1, 2)
>>> bar = reversed(foo)
>>> print bar
<reversed object at 0x036C38F0>
>>> import inspect
>>> inspect.isgenerator(bar)
False
>>> bar.next()
2
>>> bar.next()
1

Zart
16.07.2016
14:44:05
а, мой склероз меня подвёл. в тройке оно таки не генератор, а итератор, как и в двойке

Andrey
16.07.2016
14:46:11
>>> reversed(())
<reversed object at 0x035962B0>
>>> reversed([])
<listreverseiterator object at 0x036DF870>
>>> import collections
>>> reversed(collections.OrderedDict())
<generator object __reversed__ at 0x03690AA8>
>>> reversed(xrange(10))
<rangeiterator object at 0x036B5908>
Прикольно

Zart
16.07.2016
14:46:40
угу, там под разные входные типы есть оптимизированные варианты

Темный
16.07.2016
14:48:21
выходное значение всегда в ()

Zart
16.07.2016
14:49:02
Прикольно
точнее не так. сами типы могут возвращать реверсивный итератор в __reversed__

53r63rn4r
16.07.2016
14:49:57

Google

Темный
16.07.2016
14:52:41

Dk
16.07.2016
15:46:25
А вот и вас нашёл.

Gra4
16.07.2016
15:49:41
Ребят, слышал, что я не один матерю стандартный API телеграмма и рекоммендуют что-то иное?
Или мне поплакать и идти выпрямлять руки?

Dk
16.07.2016
15:51:33
О, ты и тут и там спрашиваешь)
Я попробую тут спросить, надеюсь меня направят на правильный путь

Gra4
16.07.2016
15:53:51
.split()

Zart
16.07.2016
15:53:54
...['body'].split()

Gra4
16.07.2016
15:53:54
split(' ')
Задам тут же назревший вопрос на эту же тему

Dk
16.07.2016
15:55:00
Обожаю вас, спасибо

Gra4
16.07.2016
15:55:14
Можно ли как-то более коротко .split(' ').split(',') и т.д.
?

Dk
16.07.2016
15:56:01
А в скобках - это как разделять будет?

Gra4
16.07.2016
15:56:10
Да, разделитель

Dk
16.07.2016
16:01:47
Хм. Тогда такой вопрос. Есть два списка. Один из них полученный подсказанным способом. Сравнить, содержит ли полученный список хоть один элемент из второго списка нужно через for или есть более пряморукие способы?
У меня просто скоро забор из if и for будет)

Zart
16.07.2016
16:02:17
пересечением сетов

Petr
16.07.2016
16:02:48
Кстати да

Dk
16.07.2016
16:03:08
Спасибо
Эта группа больше не существует