Python CSV读取到字典后搜索特定值
我需要一点帮助,想用Python把一些特定的值读进一个字典里。我有一个csv文件,里面有用户编号。比如用户1、2、3……每个用户都属于一个特定的部门1、2、3……而每个部门又在一个特定的建筑1、2、3……所以我想知道怎么才能列出建筑1里部门1的所有用户,然后是建筑1里的部门2,以此类推。我试过用csv.ReadDict把所有内容读进一个超级大的字典里,但如果我能在这个字典里搜索每个字典的条目就好了。有没有什么办法可以整理这个文件?这个CSV文件里有超过150,000个用户的记录。每一行都是一个新用户,列出了三个属性:用户名、部门编号和部门建筑。总共有100个部门和100栋建筑,还有150,000个用户。有没有什么简单的脚本可以把这些都整理出来?谢谢你的帮助!
1 个回答
2
一种暴力破解的方法可能是这样的
import csv
csvFile = csv.reader(open('myfile.csv'))
data = list(csvFile)
data.sort(key=lambda x: (x[2], x[1], x[0]))
然后可以扩展成
import csv
import collections
csvFile = csv.reader(open('myfile.csv'))
data = collections.defaultdict(lambda: collections.defaultdict(list))
for name, dept, building in csvFile:
data[building][dept].append(name)
buildings = data.keys()
buildings.sort()
for building in buildings:
print "Building {0}".format(building)
depts = data[building].keys()
depts.sort()
for dept in depts:
print " Dept {0}".format(dept)
names = data[building][dept]
names.sort()
for name in names:
print " ",name