Python CSV在读入字典后搜索特定值

时间:2011-02-06 02:13:06

标签: python csv dictionary

我需要一些帮助,使用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万用户。关于简短脚本的任何想法都要对它们进行排序?感谢您的帮助

1 个答案:

答案 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