2016-11-14 4 views
0

ファイル名は「names.txt」です。ファイルの各行は、この形式(年、名前、性別、数)で表示されます。例えば、(1980、david、M、12)。データをカンマで区切って作成する

私は各行を読み、それを(year、name、gender、count)という名前の辞書に分けたいと思います。プログラムを実行するたびに、辞書に追加するのではなく、読み込んだ最後のもの(年、名前、性別、カウント)を設定します。私はそれが私がしたいことをするように私のコードのどこかに追加を追加する必要がありますか?

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

あなたは正しいと思います。私はそれの中に(年、名前、性別、数)の値を持つ1つの辞書を作る方が良いでしょうか? – 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 

すべてのデータを保存するときが、この場合には理にかなっているY を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)) 

を使用して、それはしかし、データに依存します。

関連する問題