Remember that the dot notation in a Django template is used for four different notations in Python. In a template,
foo.bar can mean any of:
foo[bar] # dictionary lookup foo.bar # attribute lookup foo.bar() # method call foo[bar] # list-index lookup
It tries them in this order until it finds a match. So
foo.3 will get you your list index because your object isn't a dict with 3 as a key, doesn't have an attribute named 3, and doesn't have a method named 3.