我想以某種方式更改所有值“b”,以便將其除以某個數字。這是代碼:
- name: code
hosts: localhost
gather_facts: false
vars:
dict1: [{"a": 1, "b": 2, "c": 3}, {"a": 5, "b": 5, "c": 6},{"a": 8, "b": 9, "c": 10}]
dict2: |
[
{% for i in dict1 %}
{{ i.a, (i.b/2)|int, i.c }},
{% endfor %}
]
tasks:
- debug:
var: dict2|type_debug
- debug:
var: dict2
問題是我只有值并且缺少“鍵”
好的:[localhost] => { "dict2": [ [ 1, 1, 3 ], [ 5, 2, 6 ], [ 8, 4, 10 ] ]
我應該更改什么以包含密鑰?
另外,不是那么重要,但是對于回圈中的每個專案,我都有 [ ] 而不是 { } (在變數 dict2 中用 {} 簡單替換 [] 不起作用)。
謝謝!
uj5u.com熱心網友回復:
該變數dict1是一個字典串列。這意味著您不能簡單地定義一個值串列,還必須再次創建一個字典。
對此肯定有不同的方法,其中一種方法如下:
dict1: [{"a": 1, "b": 2, "c": 3}, {"a": 5, "b": 5, "c": 6},{"a": 8, "b": 9, "c": 10}]
dict2: |
[
{% for i in dict1 %}
{{ dict( ['a', 'b', 'c'] | zip( [i.a, (i.b/2)|int, i.c] ) ) }},
{% endfor %}
]
- 一個包含值的串列
a,b并且c被定義 - 另一個包含a、b、c值的串列被創建
- 兩個串列都由 連接
zip()。 - 生成的 zip 串列由
dict().
結果 von- debug: var=dict2如下所示:
TASK [debug] **********************
ok: [localhost] => {
"dict2": [
{
"a": 1,
"b": 1,
"c": 3
},
{
"a": 5,
"b": 2,
"c": 6
},
{
"a": 8,
"b": 4,
"c": 10
}
]
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/513612.html
標籤:字典可靠的
上一篇:按大陸將資料框轉換為字典
