2011-02-06 79 views
2

我需要一點幫助,使用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萬個用戶。任何關於短劇本的想法都可以將它們整理出來?感謝您的幫助提前Python讀取字典後,CSV CSV搜索特定值

+0

你用「用戶數」開始,然後切換到「USER_NAME 」。這是什麼?建立號碼和部門號碼以及用戶號碼始終是整數嗎? – 2011-02-06 07:09:53

回答

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 
+0

OP希望部門1跟隨部門2.您的解決方案將按部門10跟隨部門1 - 如果數字具有領先的空白,則會更糟。 – 2011-02-06 07:08:13