我确实有一个会改变的动态文本。我想以一种有意义的方式存储这些值。我已经创建了一个嵌套列表来存储它们,但我需要将它们转换为单独的字典并将其存储到列表中。我该怎么做呢?
str1 = "<RT-AC5300>192.168.1.1>34:97:F1:3B:AA:24>1<Lyra>192.168.1.129>10:7B:4B:36:A1:15>0<Lyra>192.168.1.207>10:7B:43:C7:A0:13>0<Lyra>192.168.1.195>10:7B:44:AA:BE:1B>0"
value = str1.replace('<',' ').replace('>',' ').lstrip().split(' ')
keys = ['device','ip','mac','stat']
devices = [value[x:x+4] for x in range(0, len(value), 4)]
目前还好。Devices变量是一个嵌套列表。
[['RT-AC5300', '192.168.1.1', '34:97:F1:3B:AA:24', '1'], ['Lyra', '192.168.1.129', '10:7B:4B:36:A1:15', '0'], ['Lyra', '192.168.1.207', '10:7B:43:C7:A0:13', '0'], ['Lyra', '192.168.1.195', '10:7B:44:AA:BE:1B', '0']]
我需要把它转换成这样:
[{'device': 'RT-AC5300', 'ip': '192.168.1.1', 'mac': '34:97:F1:3B:AA:24', 'stat': '1'}, {'device': 'Lyra', 'ip': '192.168.1.129', 'mac': '10:7B:4B:36:A1:15', 'stat': '0'}, {'device': 'Lyra', 'ip': '192.168.1.207', 'mac': '10:7B:43:C7:A0:13', 'stat': '0'}, {'device': 'Lyra', 'ip': '192.168.1.195', 'mac': '10:7B:44:AA:BE:1B', 'stat': '0'}]
我可以像下面这样手动操作,但它不会工作,因为长度可能会变化,所以需要迭代。
ss = [ dict(zip(keys, devices[0])), dict(zip(keys, devices[1])), dict(zip(keys, devices[2])), dict(zip(keys, devices[3])) ]
我试着
for x in enumerate(devices):
ai[x] = dict(zip(keys, devices[x]))
但是给出错误。
简体:
ai = [dict(zip(keys, device)) for device in devices]