我需要一些帮助,使用Python将特定值读入字典。我有一个带用户号码的csv文件。所以用户1,2,3 ...每个用户都在特定的部门1,2,3 ...并且每个部门都在特定的建筑物1,2,3 ...所以我需要知道如何列出建筑物1中的部门1中的所有用户然后是建筑物1中的部门2的所有用户。我一直在尝试并使用csv.ReadDict将所有内容读入一个庞大的字典中,但如果我可以搜索我读入每个词典字典的条目,这将有效。有关如何对此文件进行排序的任何想法? CSV为用户提供了超过150,000个条目。每行都是一个新用户,它列出了3个属性,user_name,departmentnumber,department building。有100个部门和100个建筑物和15万用户。关于简短脚本的任何想法都要对它们进行排序?感谢您的帮助
答案 0 :(得分: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