タイトルに少し戸惑うかもしれませんが、この問題に直面している人があまりにも多く、そのほとんどが解決方法を知っていると確信しています。
これが私の問題です。以下のようなdictオブジェクトがあります:
{ 'fields':
['Config', 'Device', 'Device Name', 'Config Name', 'description', 'ip', 'radius', 'ssid','vlan', 'channel', 'frequency', 'maxclients', 'username', 'password', 'enable_password','transport_protocol', 'personality', 'date_added', 'date_modified'],
'results': [
[23, 45, 'New test2 for demo', 'New test2 for demo', 'Default desc for device','192.168.0.100',13, '0', 0, 4, 'None', None, 'Cisco', 'Cisco', 'Cisco', 'Telnet', 'ios',datetime.datetime(2013, 3, 6, 13, 52, 14), datetime.datetime(2013, 3, 7, 14, 27, 39)],
[23, 47, 'Test after a couple hours', 'New test2 for demo', 'Default desc for device','192.168.0.100', 13, '0', 0, 4, 'None', None, 'Cisco', 'Cisco', 'Cisco', 'Telnet', 'ios',datetime.datetime(2013, 3, 6, 13, 52, 14), datetime.datetime(2013, 3, 7, 14, 27, 39)]
]
}
次のような dict オブジェクトを含むリストに変換したいと思います。
[
{'username': 'Cisco', 'transport_protocol': 'Telnet', 'Device Name': 'With a fresh breath','description': 'Default desc for device', 'date_added': datetime.datetime(2013, 3, 8, 9, 32, 13),'date_modified': datetime.datetime(2013, 3, 8, 9, 32, 13), 'ip': '192.168.0.100', 'vlan': 0,'enable_password': 'Cisco', 'Config Name': 'With a fresh breath', 'frequency': '0', 'radius': 0, 'personality': 'ios', 'Device': 49, 'maxclients': 0, 'password': 'Cisco', 'Config': 27, 'channel': 0, 'ssid': 'LBREAP'},
{'username': 'Cisco', 'transport_protocol': 'Telnet', 'Device Name': 'With a fresh breath for second device', 'description': 'Default desc for device', 'date_added': datetime.datetime(2013, 3, 8, 9, 33, 57), 'date_modified': datetime.datetime(2013, 3, 8, 11, 23, 1), 'ip': '192.168.0.35', 'vlan': 0, 'enable_password': 'Cisco', 'Config Name': 'With a fresh breath for second device', 'frequency': '0', 'radius': 0, 'personality': 'ios', 'Device': 50, 'maxclients': 0, 'password': 'Cisco', 'Config': 28, 'channel': 4, 'ssid': 'LBREAP'}
]
トップ オブジェクト フィールドを、リストを使用して 2 番目のオブジェクト キーにマップする必要があります。2 番目の for を作成するための簡単な for を作成しましたが、動作します。これで 2 番目の for を既に作成していますが、それを機能させる簡単な方法があることに興味があります。
ここに私のループがあります:
results = list()
if configSet['results']:
k = 0
for i in configSet['results']:
rSet = {}
r = 0
for f in i:
rSet[configSet['fields'][r]] = f
r += 1
results.insert(k, rSet)
k += 1
このようなdict、list、map、zipの組み合わせで処理しようとしています
dict(map(list, zip(configSet['fields'], configSet['results'])))
しかし、それは私にはうまくいきませんでした。
それを行うためのより良い、迅速かつ簡単な方法を私に提案する人はいますか?
よろしく。