2016-10-04 4 views
-2

Я не уверен, что это правильный заголовок для того, что я хочу сделать, но у меня есть список на том же уровне и вы хотите использовать «vlan» как верхний уровень, имя "как атрибут. Ниже приведен список.Python создать массив из словаря

vlans = ['vlan 1', 'name default', 'vlan 2', 'name non-default'] 

Код для создания словаря. Не уверен, что мне нужно это сделать.

for v in vlans: 
    type = v.split(" ") 
    value = dict([(type[0], type[1])]) 
    print(value) 

Выход

{'vlan': '1'} 
{'name': 'default'} 
{'vlan': '2'} 
{'name': 'non-default'} 

Ответ помечается как ответ будет работать в этой ситуации. Может ли этот выход быть достигнут?

{ 
    "vlan 1":{ 
     "name": "default" 
    }, 
    "vlan 2":{ 
     "name": "non-default" 
    }  
} 
+3

Просьба пояснить, что вы ожидаете * в качестве вывода. – deceze

+0

Это не создает ни одного словаря, но список словарей – e4c5

+0

Немного непонятно, каков фактический вопрос. Вы не знаете, как добавить результаты в список? –

ответ

0

Не уверен, что вы ищете, так вот догадка:

vlans = ['vlan 1', 'name default', 'vlan 2', 'name non-default'] 
output = {} 

for i in range(len(vlans)/2): 
    output[vlans[2*i]] = vlans[2*i + 1] 

Это производит {'vlan 1': 'name default', 'vlan 2': 'name non-default'} ли это, что вы имели в виду:

использования «виртуальной локальной сети» как верхний уровень и «имя» в качестве атрибута

EDIT: В качестве запоздалой мысли, возможно, вы хотели избавиться от «vlan» и «name» повсюду. Вот как это сделать.

vlans = ['vlan 1', 'name default', 'vlan 2', 'name non-default'] 
output = {} 

for i in range(len(vlans)/2): 
    vlan_number = (vlans[2*i].split())[1] 
    name = (vlans[2*i + 1].split())[1] 
    output[vlan_number] = name 

Это производит вывод:

{'1': 'default', '2': 'non-default'} 

Пожалуйста, обратите внимание, что здесь ВЛС номера строки. Чтобы их использовать как целые числа, просто преобразуйте их в последнюю строку, например:

output[int(vlan_number)] = name 
+0

Спасибо! Я не был уверен, как задать свой вопрос, но результат, который вы создали, - это то, что я ищу. – user2009169

Смежные вопросы