Python CSV读取到字典后搜索特定值

2 投票
1 回答
1026 浏览
提问于 2025-04-16 11:18

我需要一点帮助,想用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

撰写回答