Создаете
кастомный фильтр, который достает элемент из dict.
@register.filter
def get_item(v, a):
return v.get(a)
Теперь в шаблоне можно сделать (или даже для этого использовать переменные):
{{ foo|get_item:1|get_item:3 }}
p.s. Но зачем тут defaultdict, да и вообще dict? Почему нe list?