【发布时间】:2017-04-12 04:07:15
【问题描述】:
我正在尝试从 CSV 文件构建数据结构。 CSV 文件内容如下。
‘Windows 8’,10.1.1.1,’Windows 8 Server’,’SiteA’
‘Windows 8’,10.2.2.2,’Windows 8 Server’,’SiteB’
‘Cisco Router,’172.16.1.1’,’Cisco Router 881’,’SiteA’
‘Cisco Router,’172.16.1.3’,’Cisco Router 881’,’SiteC’
‘Cisco Router,’172.16.1.4’,’Cisco Router 881’,’SiteB’
我正在尝试按设备类型对数据进行分组,然后是站点,并拥有一个常见 IP 地址列表以及描述。
我遇到的问题是我无法确保我只初始化数据结构的各个部分。
下面是我的代码。
import csv
import pprint
data = {}
pp = pprint.PrettyPrinter(indent=4)
f = open('/Users/marcos/Desktop/vulns/data.csv', 'rt')
try:
reader = csv.reader(f)
for row in reader:
product = row[0]
ip = row[1]
description = row[2]
site = row[3]
try:
data[product][site]['ipaddresses'].append(ip)
data[product][site]['description'] = description
except:
data[product] = {}
data[product][site] = {}
data[product][site]['ipaddresses'] = []
data[product][site]['ipaddresses'].append(ip)
data[product][site]['description'] = description
finally:
f.close()
pp.pprint(data)
我目前得到的是以下内容,这是因为我相信我的异常总是触发
{ '‘Cisco Router': { '’SiteB’': { 'description': '’Cisco Router 881’',
'ipaddresses': ['’172.16.1.4’']}},
'‘Windows 8’': { '’SiteB’': { 'description': '’Windows 8 Server’',
'ipaddresses': ['10.2.2.2']}}}
【问题讨论】:
-
处理这个问题的常用方法是使用
defaultdict(dict)(来自collections)自动初始化丢失的键,或者在添加到字典(或列表,或。 ..)
标签: python list csv dictionary