我有以下資料:
fsm_header = ['VLAN_ID', 'NAME', 'STATUS']
fsm_results = [['1', 'default', 'active'],
['2', 'VLAN0002', 'active'],
['3', 'VLAN0003', 'active']]
我想像這樣創建一個特定的字典:
{'VLAN_ID':['1','2','3'],
'NAME':['default','VLAN0002','VLAN0003'],
'STATUS':['active','active','active']}
我很難找到正確的組合,因為我正在使用:
dict(zip(fsm_header, row)) for row in fsm_results
給了我另一種有用的輸出,但不是我上面提到的那個。
我寧愿在不使用 zip 功能的情況下看到一些東西,但即使使用 zip 也可以。
uj5u.com熱心網友回復:
您還需要解壓縮和壓縮fsm_results:
out = {k:list(v) for k,v in zip(fsm_header, zip(*fsm_results))}
輸出:
{'VLAN_ID': ['1', '2', '3'],
'NAME': ['default', 'VLAN0002', 'VLAN0003'],
'STATUS': ['active', 'active', 'active']}
如果您不介意將元組作為值;那么你可以使用:
out = dict(zip(fsm_header, zip(*fsm_results)))
輸出:
{'VLAN_ID': ('1', '2', '3'),
'NAME': ('default', 'VLAN0002', 'VLAN0003'),
'STATUS': ('active', 'active', 'active')}
您也可以使用以下方法撰寫相同的內容dict.setdefault:
out = {}
for lst in fsm_results:
for k, v in zip(fsm_header, lst):
out.setdefault(k, []).append(v)
uj5u.com熱心網友回復:
另一種選擇是使用 numpy 轉置值:
>>> import numpy as np
>>> dict(zip(fsm_header, np.array(fsm_results).T.tolist()))
{'VLAN_ID': ['1', '2', '3'],
'NAME': ['default', 'VLAN0002', 'VLAN0003'],
'STATUS': ['active', 'active', 'active']}
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/444674.html
