Nano Hash - криптовалюты, майнинг, программирование

Объединение переменных выбора из двух списков Ansible, когда у них есть соответствующая переменная

Кажется, я не могу понять это в Ansible, но на Python довольно просто. У меня есть два разных списка, которые мне возвращают из модуля. Модуль (ntc-ansible) по сути подключается к сетевому коммутатору и получает информацию о порте с помощью двух разных команд show. В основном я хочу перебрать список № 1 и список № 2, и если номер порта совпадает, объединить переменные из каждого списка в новый список. Например, я мог бы получить это (и другие данные) обратно из модуля:

list1 = [
    {
        "description": "Switch #1", 
        "port": "Gi1/1", 
        "protocol": "up", 
        "status": "up"
    }, 
    {
        "description": "Switch #2", 
        "port": "Gi1/5", 
        "protocol": "up", 
        "status": "up"
    }
] 

list2 = [                    {
    {
        "duplex": "a-full", 
        "name": "Switch #1", 
        "port": "Gi1/1", 
        "speed": "a-1000", 
        "status": "connected", 
        "type": "10/100/1000BaseT", 
        "vlan": "trunk"
    }, 
    {
        "duplex": "a-full", 
        "name": "Some Server", 
        "port": "Gi1/2", 
        "speed": "a-100", 
        "status": "connected", 
        "type": "10/100/1000BaseT", 
        "vlan": "trunk"
    }
]

Я хочу перебрать list1, а затем перебрать list2. Если порт совпадает, объедините записи dict в новый список, чтобы я получил правильные переменные для рассматриваемого порта. Что еще хуже, я не хочу объединять все вары, а только выбирать их.

Надеюсь, я понимаю ... Если бы я делал это на Python, я мог бы сделать:

new_list = []
for port_a in list1:
    temp_dict = {}
    for port_b in list2:
        if port_a['port'] == port_b['port']:
            temp_dict['port'] = port_a['port']
            temp_dict['desc'] = port_a['description']
            temp_dict['status'] = port_b['status']
            temp_dict['vlan'] = port_b['vlan']
            temp_dict['speed'] = port_b['speed']
            temp_dict['duplex'] = port_b['duplex']
            temp_dict['type'] = port_b['type']
            new_list.append(temp_dict)

В приведенных выше списках я бы получил только порт "Gi1 / 1" в новом списке.

09.05.2018

Ответы:


1

Вы можете использовать with_together.

- set_fact:
    new_list: "{{ new_list|default([]) + [' {{item.0}}|union({{item.1}}) '] }}"
  when: item.0.port == item.1.port
  with_together:
    - "{{list1}}"
    - "{{list2}}"
10.05.2018
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..