ansible: установить факт с несколькими значениями [duplicate]

Вы можете сделать это более просто, используя plot() вместо plot_date().

Сначала преобразуем ваши строки в экземпляры Python datetime.date:

import datetime as dt

dates = ['01/02/1991','01/03/1991','01/04/1991']
x = [dt.datetime.strptime(d,'%m/%d/%Y').date() for d in dates]
y = range(len(x)) # many thanks to Kyss Tao for setting me straight here

Затем сюжет:

import matplotlib.pyplot as plt
import matplotlib.dates as mdates

plt.gca().xaxis.set_major_formatter(mdates.DateFormatter('%m/%d/%Y'))
plt.gca().xaxis.set_major_locator(mdates.DayLocator())
plt.plot(x,y)
plt.gcf().autofmt_xdate()

Результат:

enter image description here [/g0]

3
задан Mike Vella 26 August 2016 в 11:41
поделиться

3 ответа

Я попытался бы избежать этого, но если условный список абсолютно необходим, вы можете использовать этот трюк:

---
- hosts: localhost
  gather_facts: no
  vars:
    a: 1
    b: 1
    c: 2
    some_dictionary:
      app: "{{ '[\"something\", \"something else\"' + (a + b == c) | ternary(', \"something conditional\"',' ') + ']' }}"
  tasks:
    - debug: var=some_dictionary.app

Он сформирует массивную строку (["item1","item2","item3"]) и выполнимую переменный templator преобразует его в список перед назначением app.

3
ответ дан Konstantin Suvorov 15 August 2018 в 22:27
поделиться

Есть ли причина, по которой вам нужно делать все за один раз?

Это довольно легко, если вы укажете дополнительные элементы для добавления в отдельные вары, так как вы можете просто сделать list1 + list2 .

---
- hosts: localhost
  gather_facts: False
  connection: local
  vars:
    mylist:
      - one
      - two
    mycondition: False
    myconditionalitem: foo
  tasks:
    - debug:
        msg: "{{ mylist + [myconditionalitem] if mycondition else mylist }}"
2
ответ дан Halberom 15 August 2018 в 22:27
поделиться

На основании решения Konstantin я разработал следующее:

- hosts: localhost
  gather_facts: no
  vars:
    a: "{{ True if var1|d(True) else False }}"
    b: "{{ True if var2|d(False) else False }}"
    n: "{{ True if var2|d(True) else False }}"
    some_list: "{{ '[' +
                     a|ternary('\"item1\",',' ') +
                     b|ternary('\"item2\",',' ') +
                     n|ternary('\"itemN\",',' ') + ']' }}"
  tasks:
    - debug: var=some_list

Это создаст список с элементами «item1» до «itemN», но каждый элемент добавляется только в том случае, если соответствующий флаг расширяется до ' True '.

Надеюсь, это поможет.

0
ответ дан mejo 15 August 2018 в 22:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: