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

Страница 492 из 1885
Igor
27.09.2016
18:56:07
там тоже key есть

Igor
27.09.2016
18:56:52
sorted(data, key=lambda x: x['Cells']['SeatsCount'], reverse=True)

Nobue
27.09.2016
18:57:06
спасибо за ликбез
ты лучше все же не делай такие однострочники длинные без нужды)

Google
Igor
27.09.2016
18:57:14
получишь отсортированный список в обратном порядке делаешь ему [:3] - получаешь топ3 максимальных seats count

Nobue
27.09.2016
18:57:15
и для читаемости и потому что проверки надо вставлять

хотя бы вывод max() стоит проверять перед тем, как брать индексы

Темный
27.09.2016
18:59:04
хотя, просто через условие

да, сработает)

Igor
27.09.2016
18:59:32
получишь отсортированный список в обратном порядке делаешь ему [:3] - получаешь топ3 максимальных seats count
сразу отвечу на возможный вопрос если надо сами seats count получить, можно сделать это через map или dict comprehension [x['Cells']['SeatsCount'] for x in sorted(data, key=lambda x: x['Cells']['SeatsCount'], reverse=True)[:3]]

не, не то. Надо допустим вывести все что имеет самую большую цифру
не совсем понял но списковые выражения тут в принципе норм прокатить должны

Nobue
27.09.2016
19:01:26
не надо такие однострочники делать без проверок что возвращают функции, чего ты его плохому-то учишь)

как минимум [:3] нельзя делать без проверки

Igor
27.09.2016
19:02:26
ну я и не претендую на предоставление 100% безошибочного варианта, предусмотревшего все варианты использования Темным Пше )

так можно долго продолжать - "откуда ты знаешь, что у SeatsCount не строка?", "а что если SeatsCount вообще нету, а нам надо подставить 0 в таком случае?"

Google
Igor
27.09.2016
19:03:37
проблемы надо решать по мере их поступления, если это не касается чего-то опупенно важного))

вот кстати нихуя не ясно, по сравнению с каким-нибудь там CSV, где все проблемы в экранирование упираются

Nobue
27.09.2016
19:04:47
ну тут же канал где мы должны нести разумное доброе и вечное

Igor
27.09.2016
19:06:35
ну хорошо, возьмем твой пример "нельзя делать [:3] без проверки": In [40]: lst = [1, 2] In [41]: lst[:3] Out[41]: [1, 2]

почему нельзя?) нет, конечно, на выходе можно постараться получить что-нибудь не имеющее __getitem__

но в случае с sorted() это проблематично вроде

Nobue
27.09.2016
19:08:38
не, не то. Надо допустим вывести все что имеет самую большую цифру
тебе индексы нужны для всех включений максимального значения?

Темный
27.09.2016
19:08:55
пока через перебор это вижу - аппенд если следующий равен прошлому

Nobue
27.09.2016
19:09:56
max_value = max(a) max_indices = [i for i, val in enumerate(a) if val == max_value]

Igor
27.09.2016
19:10:06
max_value = max(a) max_indices = [i for i, val in enumerate(a) if val == max_value]
только собрался то же самое написать :)

Темный
27.09.2016
19:10:28
кажется зарт это уже писал)

Nobue
27.09.2016
19:10:33
только max() обязательно делай за скобками list comprehension

иначе он каждый раз будет его вычислять

Igor
27.09.2016
19:10:42
"пиши, не читай!" - это про меня

Темный
27.09.2016
19:12:11
блин, ну точно. У меня уже есть эта строка... min_index = [i for i, v in enumerate(bars_seat) if v == min_seats]

Nobue
27.09.2016
19:14:23
главное чтобы у тебя там были не флоаты

Темный
27.09.2016
19:16:09
а что с ними? (их там нет)

Nobue
27.09.2016
19:16:42
их скорее всего придется сравнивать более хитрым способом

Темный
27.09.2016
19:17:26
а, битность, вот это все?

Google
Nobue
27.09.2016
19:17:44
чтобы скажем 1.6999999... и 1.7 были одинаковыми или возможно тебе нужна точность до десятой, а не до сотой, итд

Igor
27.09.2016
19:17:57
ну, к чести сказать, питончик начиная с определенного момента делает их равными (если сравнивать с целочисленными)

Nobue
27.09.2016
19:17:59
там сравнение надо делать с допущением погрешности

ну да, такой простой случай он сам разрулит

Igor
27.09.2016
19:18:19
In [75]: 2 == 2.000000000000001 Out[75]: False In [76]: 2 == 2.0000000000000001 Out[76]: True

но да, надо быть офигенно аккуратным %)

Nobue
27.09.2016
19:18:59
это не специфика питона, так практически в любом языке придется делать

Igor
27.09.2016
19:19:02
а если с валютой работаешь то вообще нахер привычные флоаты

Johnnie
27.09.2016
19:26:27
@login_manager.user_loader def load_user(user_id): return User.query.filter(User.id == int(user_id)).first()

Темный
27.09.2016
19:26:31
max_value = max(a) max_indices = [i for i, val in enumerate(a) if val == max_value]
чет он мне только минимальное значение выводит

Johnnie
27.09.2016
19:26:40
возвращаясь к фласку) почему тут может быть user_id == None?

соот-но int() падает ValueError: invalid literal for int() with base 10: 'None'

Nobue
27.09.2016
19:27:23
чет он мне только минимальное значение выводит
он выводит индексы где находится максимальное значение

Igor
27.09.2016
19:27:29
возвращаясь к фласку) почему тут может быть user_id == None?
потому что юзер не авторизован / анонимный?

Johnnie
27.09.2016
19:27:55
то есть надо добавлять проверку ?

return User.query.filter(User.id == int(user_id)).first() if user_id else None

Igor
27.09.2016
19:28:11
именно! @itohnobue как раз чуть выше писал, что надо проверять :)

Темный
27.09.2016
19:28:36
только минимальное выдает

Google
Nobue
27.09.2016
19:28:41
так ты поменяй min(... на max(...

Igor
27.09.2016
19:28:48
то есть надо добавлять проверку ?
а разве алхимия не сумеет в User.query.get(user_id) просто?

Темный
27.09.2016
19:29:07
так ты поменяй min(... на max(...
нене, минимум) да и это не суть мин или макс

Igor
27.09.2016
19:29:20
у меня во фласковом проекте так и норм: @login_manager.user_loader def load_user(user_id): return db.session.query(User).get(user_id)

хм, сумела
ну вот и славно :)

Nobue
27.09.2016
19:30:13
нене, минимум) да и это не суть мин или макс
так тебе индексы значений нужны или само значение?

Johnnie
27.09.2016
19:30:34
Igor
27.09.2016
19:30:37
не за что )

Темный
27.09.2016
19:30:43
так тебе индексы значений нужны или само значение?
следую из енумерейт - индексы, но выдает только само значение

Igor
27.09.2016
19:31:04
следую из енумерейт - индексы, но выдает только само значение
так enumerate возвращает и индекс, и значение i - индекс v - значение

Johnnie
27.09.2016
19:31:10
https://github.com/stormpath/stormpath-flask

это никто не пользовал?

Nobue
27.09.2016
19:31:33
следую из енумерейт - индексы, но выдает только само значение
покажи содержимое массива и что ты хочешь вытащить

ну скажем если у тебя массив [1, 2, 3, 10, 1, 2, 3, 10, 5, 10]

Igor
27.09.2016
19:32:12
https://github.com/stormpath/stormpath-flask
¯\_(ツ)_/¯ ты так хочешь создавать аккаунт в каком-то левом сервисе? (сорри, впервые про него слышу)

Nobue
27.09.2016
19:32:13
что тебе из него надо получить?

Темный
27.09.2016
19:32:39
покажи содержимое массива и что ты хочешь вытащить
{ "Id": "ae3e9479-070f-4d66-9429-de3acd8427ac", "Number": 1, "Cells": { "global_id": 20660594, "Name": "Юнион Джек", "IsNetObject": "нет", "OperatingCompany": null, "AdmArea": "Центральный административный округ", "District": "Мещанский район", "Address": "Нижний Кисельный переулок, дом 3, строение 1", "PublicPhone": [{ "PublicPhone": "(495) 621-19-63" }], "SeatsCount": 30, "SocialPrivileges": "нет", "geoData": { "type": "Point", "coordinates": [ 37.621587946152012, 55.765366956608361 ] } } },

Johnnie
27.09.2016
19:32:48
¯\_(ツ)_/¯ ты так хочешь создавать аккаунт в каком-то левом сервисе? (сорри, впервые про него слышу)
This application provides a simple local web server that allows you to create users, log them in, log them out, etc. где тут про левый сервер? или не там смотрю?

Igor
27.09.2016
19:32:48
https://github.com/stormpath/stormpath-flask
если нужно воткнуть пользователей во фласко-приложение, есть flask-login; если хочется авторизации без е мейла и пароля - есть flask-oauth, или как там их

Google
Igor
27.09.2016
19:33:02
для того, чтобы воспользоваться этим расширением, тебе надо создать акк на stormpath, создать апи-ключ, привязать его к своему сайту...

Johnnie
27.09.2016
19:33:34
воно оно чо, Михалыч

Nobue
27.09.2016
19:33:38
куча таких вот
так у тебя совсем другая задача получается) и что тебе надо из таких вытащить?

Johnnie
27.09.2016
19:33:40
ну его в пень тогда

Igor
27.09.2016
19:33:42
и, полагаю, все юзеры будут там же и храниться. нахуй оно надо? :)

Igor
27.09.2016
19:34:28
а получить название, намриер зная индексы
индексы - "порядковые номера в списке" или "uuidы" вот эти - data['id']?

Nobue
27.09.2016
19:34:35
ок, понял

кинь куда-нибудь весь код целиком

только не в чат

Nobue
27.09.2016
19:35:13
я про тот кусок который всю обработку делает

Темный
27.09.2016
19:36:04
да не-не все круто. Просто я получаю минимальное значение из всех ключей, а енумерейт выплевывает только значение, а не индексы по нему

Igor
27.09.2016
19:36:45
[obj['Cells']['Name'] for i, obj in enumerate(data) if i in (1, 4)]

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

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