
Igor
27.09.2016
18:56:07
там тоже key есть

Темный
27.09.2016
18:56:25

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

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

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

Темный
27.09.2016
19:03:33

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

Темный
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
а если с валютой работаешь то вообще нахер привычные флоаты

Темный
27.09.2016
19:24:50

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

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

Темный
27.09.2016
19:27:32

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

Темный
27.09.2016
19:29:07

Johnnie
27.09.2016
19:29:18

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

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

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

Igor
27.09.2016
19:32:48

Google

Темный
27.09.2016
19:33:00
{
"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
]
}
}
},
куча таких вот

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
и, полагаю, все юзеры будут там же и храниться. нахуй оно надо? :)

Темный
27.09.2016
19:33:48
{
"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
]
}
}
},
а получить название, намриер зная индексы
но чтото плошло не так

Igor
27.09.2016
19:34:28

Nobue
27.09.2016
19:34:35
ок, понял
кинь куда-нибудь весь код целиком
только не в чат

Темный
27.09.2016
19:34:51

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

Nobue
27.09.2016
19:36:53
Эта группа больше не существует