Liquid supports using String literals as Hash keys or Array indices. For example, instead calling page.data.foo you can use page.data['foo']. Using variables with this functionality allows for some cool tricks.
{% assign my_num = 3 %} {% for i in (1..my_num) %} {% assign var = "bar_" | append: i %} {{ page.data.foo[var].title }} {% endfor %}