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

Страница 493 из 1885
Nobue
27.09.2016
19:37:06
для каждого элемента

Темный
27.09.2016
19:37:22
пока я не решил укоротить

Nobue
27.09.2016
19:37:46
ну без кода не получится понять что там не так

Google
Igor
27.09.2016
19:37:55
удлиняй обратно и смотри где накосячил )

Темный
27.09.2016
19:44:44
Igor
27.09.2016
19:45:16
хм

Темный
27.09.2016
19:45:25
min_seat возвращает один срез типа того что я выше писал

Igor
27.09.2016
19:45:31
ааа

так ты сравниваешь i in SeatsCount

т.к. SeatsCount - число, ты получаешь такую ошибку

Темный
27.09.2016
19:46:10
ээ

Igor
27.09.2016
19:46:18
in юзается для случая, если надо узнать, "а есть ли такой элемент в таком-то масссиве?"

например if 1 in (1, 2, 3)

Темный
27.09.2016
19:46:36
а, щас на == попробую

Igor
27.09.2016
19:46:49
а ты сравниваешь число с числом, поэтому да, поэтому ==

ну хотя может, конечно, у тебя min_seat['Cells']['SeatsCount'] и должен возвращать список, но вряд ли )

Google
Темный
27.09.2016
19:47:47
все равно возвращает только первое из среза минимального значения

Igor
27.09.2016
19:48:04
ну да, потому что ты сравниваешь индекс

индекс уникальный только один

Темный
27.09.2016
19:48:31
сложна

Igor
27.09.2016
19:48:33
если хочешь сравнить все, то сравнивай тогда уж инфу о свободных местах по текущему объекту с соответствующей инфой о свободных местах по минимальному значению

то бишь

т.к. ты делаешь i, obj in enumerate(...), у тебя будет

Темный
27.09.2016
19:49:02
ну да, потому что ты сравниваешь индекс
я думал получаю инфу по индексу в котором есть совпадение по значению

Igor
27.09.2016
19:49:04
if obj['Cells']['SeatsCount'] == min_seat['Cells']['SeatsCount']

тогда тебе list comprehension выплюнет все значения из списка enumerate(data), соответствующие этому условию

возможно, я снова не понял твою структуру данных и/или то, чего ты пытаешься добиться))

Темный
27.09.2016
19:51:08
ааа... я долбился в и, а не обж?)

Igor
27.09.2016
19:51:12
да

а i - это всего лишь ссаная цифирка

Темный
27.09.2016
19:53:34
спасибо!)

в итоге с 13 строк сократил до 2х, притом что энумерейт тоже использовался в старой)

Igor
27.09.2016
19:54:49
норм!

смотри простор для улучшения:

data = [ { 'Cells': { 'Name': 'Писька мамонта', 'District': 'Выхино', 'People': 100500 } }, { 'Cells': { 'Name': 'Попа негра', 'District': 'Марьино', 'People': 1488 } }, { 'Cells': { 'Name': 'Кадык страуса', 'District': 'Алтуфьево', 'People': 666 } } ] print '\n'.join( [str(i) + ' - ' + obj['Cells']['Name'] for i, obj in enumerate(data)] ) # 0 - Писька мамонта # 1 - Попа негра # 2 - Кадык страуса max_people = max(data, key=lambda obj: obj['Cells']['People'])['Cells']['People'] # max_people == 100500 max_obj_name = max(data, key=lambda obj: obj['Cells']['People'])['Cells']['Name'] # min_obj_name == 'Писька мамонта' min_obj_name = min(data, key=lambda obj: obj['Cells']['People'])['Cells']['Name'] # min_obj_name == 'Кадык страуса'

извините за простыню

Google
Темный
27.09.2016
19:55:47
Не стоит гнаться за минифицированием
в данном случае все стало понятно и с 2мя переменными, а не как у меня с 5 и кучей ифов и фор

Johnnie
27.09.2016
19:56:06
'Кадык страуса' интересненько))

Igor
27.09.2016
19:56:15
т.е. get_smallest_bar(), похоже, это просто min() :)

Темный
27.09.2016
19:57:39
т.е. get_smallest_bar(), похоже, это просто min() :)
так и есть, просто он может быть как 1 так и много

Igor
27.09.2016
19:58:00
Темный
27.09.2016
19:58:06
вооот

Igor
27.09.2016
19:59:32
хотя ничего не мешает сделать, как любят на собеседованиях спрашивать знаешь, что небольших пабов ровно три штуки? говно вопрос! In [28]: ['Tiny Pub'] * 3 Out[28]: ['Tiny Pub', 'Tiny Pub', 'Tiny Pub'] (шучу, не надо так делать)

Темный
27.09.2016
20:00:50
мне посоветовали сделать проверку на сложность пароля от 1 до 10 - random(1-10)

так наверное тоже не стоит делать?)

Igor
27.09.2016
20:01:51
наверное, зависит от :)

Johnnie
27.09.2016
20:03:43
а как правильно убирать "Sign in" из NavBar'а?

сейчас у меня так: def top_nav_bar(): nav = Nav() nav.register_element( 'top', Navbar( 'MY_TITLE', View('Home', 'common.index'), View('Sign in', 'auth.signin'), View('Logout', 'auth.logout'), ) ) return nav

Igor
27.09.2016
20:04:13
{% if current_user.is_authenticated %} ... {% else %} ... {% endif %}

А, так

Johnnie
27.09.2016
20:04:20
это в шаблоне

Igor
27.09.2016
20:05:08
да, я поспешил, сорри :) Нууу.. т.к. эти две вьюхи - sign in и logout у тебя взаимозаменяемы, можешь тупо написать

Johnnie
27.09.2016
20:05:21
гугление SO чет не выдало сходу best practice :)

Igor
27.09.2016
20:05:21
View(SignIn) if current_user.is_authenticated else View(LogOut)

я эту логику запихнул к херам в сам шаблон

Google
Igor
27.09.2016
20:06:21
нехорошо, конечно, логику в шаблонах хранить, но раз уж так всё - то идеально подходит

Johnnie
27.09.2016
20:06:52
да там и в офф доке такой пример идет

Igor
27.09.2016
20:07:42
сейчас у меня так: def top_nav_bar(): nav = Nav() nav.register_element( 'top', Navbar( 'MY_TITLE', View('Home', 'common.index'), View('Sign in', 'auth.signin'), View('Logout', 'auth.logout'), ) ) return nav
ну, т.е., вот так так 'top', Navbar( 'MY_TITLE', View('Sign in', 'auth.signin') if current_user.is_authenticated else View('Logout', 'auth.logout'), )

Johnnie
27.09.2016
20:09:47
from flask_login import current_user ?

в шаблонах это некий прокси

а тут его похоже не отсюда брать нужно

AttributeError: 'NoneType' object has no attribute 'is_authenticated'

не канает

пойду гуглить

On login_user, Flask-Login gets the user object's ID from User.get_id and stores it in Flask's session. Flask-Login then sets a before_request handler to load the user instance into the current_user object, using the load_user hook we provide. The logout_user function then removes the relevant bits from the session.

навбар раньше создается чем этот объект похоже

Igor
27.09.2016
20:13:03
ага

ща скину свой шаблончик

там, конечно, любой человек охуеет, но мало ли поможет как

Johnnie
27.09.2016
20:13:57
просто хотелось красиво меню в одном методе сочинить

а в итоге придется костыли хуярить

Igor
27.09.2016
20:15:00
https://gist.github.com/hatarist/a122d201e37d8586072f7d05635bfe19

вот мой костылёчек родименький!

ты только сильно не пугайся

как-то так в итоге

Google
Johnnie
27.09.2016
20:18:18
ну то есть выкинуть к хуям этот Flask-Nav и сделать меню в шаблонах?

Igor
27.09.2016
20:18:49
хз, смотри как тебе удобнее/проще окажется

в глаза не видел flask-nav)

Johnnie
27.09.2016
20:19:34
http://pythonhosted.org/flask-nav/

выглядит просто и круто

а на деле))

ладно, пойду еще доки почитаю

может есть средство

Igor
27.09.2016
20:20:06
вон, кстати, в документации

https://github.com/mbr/flask-nav/blob/master/docs/advanced-topics.rst#dynamic-construction

ой, бесполезно, похоже > This does not alter the structure of the bar though

Johnnie
27.09.2016
20:21:22
ну тут не вижу доступа к юзеру))

Igor
27.09.2016
21:10:06
[obj['Cells']['Population'] for obj in data if data['Cells']['Name'] == "Писька мамонта"] - получаешь populationы диктов с таким названием

Темный
27.09.2016
21:10:23
не, не то

зайти в этот дикт и забрать популейшин, например

Igor
27.09.2016
21:11:11
все еще не подходит?)

(сорри, случайно отредактировал прошлое сообщение вместо того чтоб новое написать)

Темный
27.09.2016
21:13:24
[obj['Cells']['Population'] for obj in data if data['Cells']['Name'] == "Писька мамонта"] - получаешь populationы диктов с таким названием
выглядит громозко как-то. Неужели нельзя обратиться в определенное место более просто? этот "нейм" уникальный если что

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

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