从CSV创建多个词典 - Python 2.7

时间:2017-12-09 20:29:36

标签: python python-2.7 csv dictionary

问题

我想创建多个词典,因为它们都有一个CSV文件第一行的唯一标识符

我想拨打2911 [' ipadd']返回CSV文件第二行的相关代码,但我很难过。

我发现这似乎与我想达到的目标非常接近Creating multiple nested dictionaries from .txt file

然而,人们推荐的东西并不适用于我的解决方案,因此它会受到影响。

代码

mylist = []

with open('file.csv','r') as f:
   reader = csv.reader(f)
   for row in reader:
      mylist.append({'name': row[0], 'ipadd': row[1], 'mac': row[2], 'interfaces': row[3:]})

for line in mylist:
   print(line['ipadd'])

我尝试通过第一行唯一标识变量,然后使用它来附加信息,但当然变量没有附加'功能

CSV信息

2811,1.1.1.1,AA:BB:CC:DD:EE,Fa0 / 0,Fa0 / 1,Fa1 / 0,Fa1 / 1

2911,2.2.2.2,BB:CC:DD:EE:FF,S0 / 0/0,S0 / 0/1,S0 / 1/0,S0 / 1/1

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

import csv
headers = ['name', 'ipadd', 'mac', 'interfaces']
new_data = [{a:b for a, b in zip(headers, i[:3]+[i[3:]])} for i in csv.reader(open('file.csv'))]

答案 1 :(得分:1)

我做了一个工作;我最终创建了一个对象

class router:
   name = ''
   ipadd = ''
   mac = ''
   interfaces = []
   def __init__(self, name, ipadd, mac, interfaces):
      self.name = name
      self.ipadd = ipadd
      self.mac = mac
      self.interfaces = interfaces

with open('file.csv') as f:
reader = csv.reader(f)
for row in reader:
    item = row[0]
    newitem = item.split('\t')
    mylist.append(router(newitem[0], newitem[1], newitem[2], newitem[3:]))