loop over dict2items

Hi all, trying the following playbook taken from user_guide/playbooks_loops.html 

- hosts: localhost
  tasks:
  - name: create a tag dictionary of non-empty tags
    set_fact:
      tags_dict: "{{ (tags_dict|default({}))|combine({item.key: item.value}) }}"
    loop: "{{ tags|dict2items }}"
    vars:
      tags:
        Environment: dev
        Application: payment
        Another: "{{ doesnotexist|default() }}"
    when: item.value != ""

I got the error 

$ ansible-playbook dict2items.yml 

PLAY [localhost] **************************************************************************************************************************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************************************************************************************************************************
ok: [localhost]

TASK [create a tag dictionary of non-empty tags] ******************************************************************************************************************************************************************************************************************************
fatal: [localhost]: FAILED! => {"msg": "dict2items requires a dictionary, got <class 'jinja2.runtime.StrictUndefined'> instead."}
	to retry, use: --limit @/home/fusillator/Code/ansible/dict2items.retry

PLAY RECAP ********************************************************************************************************************************************************************************************************************************************************************
localhost                  : ok=1    changed=0    unreachable=0    failed=1   

$ ansible-playbook --version
ansible-playbook 2.7.6

Any hint?

thanks 

Luca 

I figure out that the problem was related to the variable name (tags) 
the name tags is also used for the special attribute tags useful for filtering tasks to be executed.
Anyway changing the snippet using mytags instead of tags solves the error.

- hosts: localhost
  tasks:
  - name: create a tag dictionary of non-empty tags
    set_fact:
      tags_dict: "{{ (tags_dict|default({}))|combine({item.key: item.value}) }}"
    loop: "{{ mytags|dict2items }}"
    vars:
      mytags:
        Environment: dev
        Application: payment
        Another: "{{ doesnotexist|default() }}"
    when: item.value != ""

Please consider to update the manual