2016-11-14 57 views
0

我有一個名爲'names.txt'的文件。文件的每一行都是這種格式(年份,名稱,性別,數量)。例如(1980,david,M,12)。創建從逗號分隔的數據字典

我想閱讀每一行,然後將其分成名爲(年,名,性別,數量)的字典。每次我運行我的程序時,它會將它讀取的最後一個內容(年份,名稱,性別,計數)設置,而不是將其添加到字典中。我是否必須在我的代碼中的某處添加追加程序,以便它符合我的要求?

f = open('names.txt') 
lines = 0 
years = {} 
names = {} 
gender = {} 
count = {} 
for line in f: 
    lines += 1 
    years, names, gender, count = line.strip().split(",") 
print(names) 
return lines 
+0

你想添加到詞典或列表?我可以看到你正在使用字典,但你會用什麼作爲鍵?我認爲你實際上試圖做的是追加到列表中? –

+0

我認爲你是對的。我會更好地製作一本字典,其中包含(年,姓名,性別和數量)的值嗎? – user2288575

+0

真正的問題是你想要什麼作爲你的鑰匙和價值? –

回答

2

字典是爲按鍵搜索而構建的。通過目前的使用情況,它看起來像你正在尋找重疊的名單,因爲沒有字段有一個關鍵:

lines = 0 
years, names, genders, counts = [], [], [], [] 
for line in f: 
    year, name, gender, count = line.strip().split(",") 
    years.append(year) 
    names.append(name) 
    genders.append(gender) 
    counts.append(int(count)) 
    lines += 1 

但是,創建dictionar Ÿ有道理在這種情況下,保存所有數據時根據該名鍵:

lines = 0 
people = {} 
for line in f: 
    year, name, gender, count = line.strip().split(",") 
    people[name] = {'year': year, 'gender': gender, 'count': int(count)} 
    lines += 1 
1

這個怎麼樣。使用defaultdict

   from collections import defaultdict 
       f = open('names.txt') 
       lines = 0 

       d = defaultdict(list) 

       for line in f: 
        year, name, gender, count = line.strip().split(",") 
        d[year].append((name,gender,count)) 

這取決於數據雖然。