Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 7, 2011 11:10:05

Moroznui
От:
Зарегистрирован: 2010-10-12
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск по tuple

Что-то застрял на очень простой проблеме.
Нужно найти в tuple

CATEGORY_CHOICES = (
('lift', u'Лифт'),
('eks', u'Экскалатор'),
('pod', u'Подъемник'),
)
Нужное значение.
Написал такой костыль:
for a,q in CATEGORY_CHOICES:
if a == self.args[0]:
context['category'] = q
Как сделать правильно?



Офлайн

#2 Дек. 7, 2011 11:24:50

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

Поиск по tuple

>>> CATEGORY_CHOICES = (
... ('lift', u'Лифт'),
... ('eks', u'Экскалатор'),
... ('pod', u'Подъемник'),
... )
...
>>> if ('eeee', u'eee') in CATEGORY_CHOICES:
... print 'ok'
... else:
... print 'no'
no
>>> if ('lift', u'Лифт') in CATEGORY_CHOICES:
... print 'ok'
... else:
... print 'no'
ok



Офлайн

#3 Дек. 7, 2011 11:30:48

Moroznui
От:
Зарегистрирован: 2010-10-12
Сообщения: 29
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск по tuple

sp3
>>> CATEGORY_CHOICES = (
... ('lift', u'Лифт'),
... ('eks', u'Экскалатор'),
... ('pod', u'Подъемник'),
... )
...
>>> if ('eeee', u'eee') in CATEGORY_CHOICES:
... print 'ok'
... else:
... print 'no'
no
>>> if ('lift', u'Лифт') in CATEGORY_CHOICES:
... print 'ok'
... else:
... print 'no'
ok
То же самое и сделали.

Известно только ‘lift’, надо получить u'Лифт'.


До этого всегда использовал dict, но django диктует свои правила.



Офлайн

#4 Дек. 7, 2011 11:43:47

s0rg
От:
Зарегистрирован: 2011-06-05
Сообщения: 777
Репутация: +  25  -
Профиль   Отправить e-mail  

Поиск по tuple

CATEGORY_CHOICES = (
('lift', u'Лифт'),
('eks', u'Экскалатор'),
('pod', u'Подъемник'),
)

def foo(cat):
tmp = dict(CATEGORY_CHOICES)
return tmp.get(cat, None)

print foo('lift')

Офлайн

#5 Дек. 7, 2011 12:50:19

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9973
Репутация: +  856  -
Профиль   Отправить e-mail  

Поиск по tuple

>>> CATEGORY_CHOICES = (('lift', u'Лифт'),
... ('eks', u'Экскалатор'),
... ('pod', u'Подъемник'))
>>>
>>> try:
... print dict(CATEGORY_CHOICES)['lift']
... except KeyError:
... pass
...
Лифт
>>>
ещё



Офлайн

#6 Дек. 7, 2011 13:43:31

Kupuyc
От:
Зарегистрирован: 2011-08-10
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Поиск по tuple

Возможно, я что-то упускаю, но исключение тут не очень красивое решение.

Мутантик из вашего и предыдущего решения - dict(CATEGORY_CHOICES).get(key, default)



Офлайн

#7 Дек. 8, 2011 01:31:29

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9973
Репутация: +  856  -
Профиль   Отправить e-mail  

Поиск по tuple

так лучше, но try … except тоже нужно знать



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version