Найти - Пользователи
Полная версия: Поиск по tuple
Начало » Python для новичков » Поиск по tuple
1
Moroznui
Что-то застрял на очень простой проблеме.
Нужно найти в tuple
CATEGORY_CHOICES = (
('lift', u'Лифт'),
('eks', u'Экскалатор'),
('pod', u'Подъемник'),
)
Нужное значение.
Написал такой костыль:
for a,q in CATEGORY_CHOICES:
if a == self.args[0]:
context['category'] = q
Как сделать правильно?
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
Moroznui
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 диктует свои правила.
s0rg
CATEGORY_CHOICES = (
('lift', u'Лифт'),
('eks', u'Экскалатор'),
('pod', u'Подъемник'),
)

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

print foo('lift')
py.user.next
>>> CATEGORY_CHOICES = (('lift', u'Лифт'),
... ('eks', u'Экскалатор'),
... ('pod', u'Подъемник'))
>>>
>>> try:
... print dict(CATEGORY_CHOICES)['lift']
... except KeyError:
... pass
...
Лифт
>>>
ещё
Kupuyc
Возможно, я что-то упускаю, но исключение тут не очень красивое решение.

Мутантик из вашего и предыдущего решения - dict(CATEGORY_CHOICES).get(key, default)
py.user.next
так лучше, но try … except тоже нужно знать
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB