Well, since there's no answers I'll post my solution based on the suggestions.
First you have to add collections.OrderedDict
to the Jinja environment since Jinja doesn't know about it:
JINJA_ENV = jinja2.Environment( . . . )
JINJA_ENV.globals['OrderedDict'] = collections.OrderedDict
And then in the template:
{% set typeLabels = OrderedDict([
('type1', 'Label for type 1'),
('type2', 'Label for type 2'),
('type3', 'Label for type 3')
]) %}
So now you can access the dictionary normally:
{{ typeLabels[someType] }}