# How to use a variable as index to an array

**URL:** <https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153>\
**Category:** Ansible Project\
**Created:** [August 1, 2017, 3:53pm UTC](https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153 "2017-08-01T15:53:50Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Joseph\_Murdock](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@Joseph\_Murdock](https://forum.ansible.com/u/Joseph_Murdock)\
**Post date:** [August 1, 2017, 3:53pm UTC](https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153/1 "2017-08-01T15:53:50Z")

</div>

Hello,

I am trying to figure out the correct syntax for using a variable as an index to an array:

- set\_fact:  
cnt: “{{ response.stdout\_lines | count - 1 }}”

# filename: “{{ response.stdout\_lines[3] }}”

filename: “{{ response.stdout\_lines[{{cnt|int}}] }}”

The hardcoded lines[3] works fine, but how can I substitute a variable for the 3?

Thanks,  
Joe

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [August 1, 2017, 4:05pm UTC](https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153/2 "2017-08-01T16:05:03Z")

</div>

Curly brackets doesn't stack so remove the inner most ones.

filename: "{{ response.stdout\_lines[cnt|int] }}"

---

<div class="post-metadata">

**Author:** ![Joseph\_Murdock](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@Joseph\_Murdock](https://forum.ansible.com/u/Joseph_Murdock)\
**Post date:** [August 2, 2017, 7:04pm UTC](https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153/3 "2017-08-02T19:04:00Z")

</div>

Kai,  
Ansible does not like that format either. Complains of undefined variable ‘cnt’ … (no {{ }} around it to avoid the stacking)  
The error was: ‘cnt’ is undefined. Other ideas?

---

<div class="post-metadata">

**Author:** ![Kai\_Stian\_Olstad](https://avatars.discourse-cdn.com/v4/letter/k/e19adc/32.png) [@Kai\_Stian\_Olstad](https://forum.ansible.com/u/Kai_Stian_Olstad)\
**Post date:** [August 2, 2017, 9:40pm UTC](https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153/4 "2017-08-02T21:40:24Z")

</div>

That's because you can't use a variable that is set in the same set\_fact so they need to be two task.

- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cnt: "{{ response.stdout\_lines | count - 1 }}"

- set\_fact:  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filename: "{{ response.stdout\_lines[cnt|int] }}"

---

<div class="post-metadata">

**Author:** ![Joseph\_Murdock](https://avatars.discourse-cdn.com/v4/letter/j/58956e/32.png) [@Joseph\_Murdock](https://forum.ansible.com/u/Joseph_Murdock)\
**Post date:** [August 3, 2017, 2:27pm UTC](https://forum.ansible.com/t/how-to-use-a-variable-as-index-to-an-array/25153/5 "2017-08-03T14:27:04Z")

</div>

That worked. Thanks!
