我有一个列表 sList
为:
sList = ['12','8','10']
我需要sList
所有元素的总和。
我在 jinja2 中遇到了 sum()
函数,但它需要属性等,并且不知道如何将它与 list
一起使用。
我尝试过:
- set_fact:
sList:
- '12'
- '8'
- '10'
- set_fact:
sumList: "{{ sum(sList) }}"
- debug: var=sumList
预期结果:sumList = 30,但出现以下错误:
"msg": "The task includes an option with an undefined variable. The error was: 'sum' is undefined
请帮忙。
谢谢
最佳答案
过滤器sum “返回数字序列的总和”。变量sList是一个字符串列表。下面的任务将会失败
- set_fact:
sList: ['12', '8', '10']
- set_fact:
sumList: "{{ sList|sum }}"
fatal: [localhost]: FAILED! => msg: 'Unexpected templating type error occurred on ({{ sList|sum }}): unsupported operand type(s) for +: ''int'' and ''AnsibleUnicode'''
要解决该问题,请使用数字列表。例如
- set_fact:
sList: [12, 8, 10]
- set_fact:
sumList: "{{ sList|sum }}"
- debug:
var: sumList
给予
sumList: '30'
下一个选项是将列表中的项目转换为数字。映射 int或float功能。例如
- set_fact:
sList: ['12', '8', '10']
- set_fact:
sumList: "{{ sList|map('int')|sum }}"
- debug:
var: sumList
- set_fact:
sumList: "{{ sList|map('float')|sum }}"
- debug:
var: sumList
给予
sumList: '30'
sumList: '30.0'
关于list - 在ansible中是否有对列表内容求和的快捷方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64550196/