@python_beginnersЭта группа больше не существует

Страница 152 из 1885
Zart
16.07.2016
13:26:05
а. стоп. перебор аттрибутов инстанса..

не, весь код - бреда кусок

что ты пытаешься сделать вообще?

Aleksey
16.07.2016
13:27:07
for (key, val) in enumerate(data): for (key2, val2) in val.__dict__.iteritems(): if val2 is None: setattr(data, val2, 0)
data приходит с базы. в случае data[key].key2 is None, надо поменять значение data[key].key2 на 0

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]

Aleksey
16.07.2016
13:29:20
data - это что, список или дикт?
Abonent.objects.raw("Some sql :params", query_params)...

data - это что, список или дикт?
*data = Abonent.objects.raw("Some sql :params", query_params)...

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

Aleksey
16.07.2016
13:30:39
а что мешает поправить sql чтобы возвращал нули сразу вместо нуллов
Просто интересно стало возможно ли реализовать это на Python.

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
for row in data: for key, val in vars(row).items(): if val is None: setattr(row, key, 0)
Спасибо большое, заработало. Вы гений ???

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

Aleksey
16.07.2016
13:35:27
выкинь джангу
Альтернатива?

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

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
это просто синтаксический сахар для вызова функции с аргументом класса/функции/метода

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
какого множества? это туплы
дока не помогла мне, из тупла нельзя вывести по индексу? нужно перевернуть его (11, foo) -> (foo, 11)

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
max_kv[::-1] же
таки, да

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
print(*reversed(max_kv))
можно где-то почитать про это?

вплане, что тип меняется или не меняется

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

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
>>> t = 1, 'foo' >>> print(t) (1, 'foo') я не знаю как у тебя вышло 11 foo
Так, а как привезти t теперь к строке?

выходное значение всегда в ()

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
Спасибо

Страница 152 из 1885

Эта группа больше не существует Эта группа больше не существует