Python的新手。我正在尝试使用从另一个列表内LIST的第一个元素派生的字典名称在FOR LOOP内部动态创建新字典。
我的目标是最终得到一个看起来像这样的数据结构:
router1 = {'Hostname': 'router1',
'OS-Type': 'ios',
'IP Address': '1.1.1.1',
'Username': 'user1',
'Password': 'cisco',}
router2 = {'Hostname': 'router2',
'OS-Type': 'ios',
'IP Address': '1.1.1.2',
'Username': 'user2',
'Password': 'cisco',}
sw1 = {'Hostname': 'sw1',
'OS-Type': 'cat-os',
'IP Address': '1.1.1.3',
'Username': 'user3',
'Password': 'cisco',}
这些词典稍后会添加到列表中:
dictionary_list = [router1, router2, sw1]
这是我的FOR LOOP当前的样子:
for i in range(len(device_list)):
dynamic_dictionary = {'Hostname': device_list[i][0],
'OS-Type': device_list[i][1],
'IP Address': device_list[i][2],
'Username': device_list[i][3],
'Password': device_list[i][4]}
任何帮助将不胜感激。
谢谢!
答案 0 :(得分:0)
对于您的for循环,
# Python3 code to iterate over a list
dict_list = [[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]
host_list = []
# Using for loop
for i in list:
host_dict = {'Hostname': i[0], 'OS-Type': i[1], 'IP Address': i[2], 'Username': i[3], 'Password': i[4]}
host_list.append(host_dict)
我们做了什么,而不是使用在数组中使用索引的旧样式,而是将其替换为迭代器。有多种方法可以迭代Python中不同类型的数据。在这里阅读它们:loops in python
希望这能回答您的问题。
答案 1 :(得分:0)
为什么不立即将要创建的字典追加到列表中。另外,请事先定义键列表,以便在迭代键列表时可以追加字典
li = []
keys = ['Hostname', 'OS-Type', 'IP Address', 'Username', 'Password']
for i in range(len(device_list)):
dct = {}
for idx, key in enumerate(keys):
dct[key] = device_list[i][idx]
li.append(dct)