根据逗号分隔的数据创建字典

时间:2016-11-14 22:43:52

标签: python dictionary

我有一个名为' 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

2 个答案:

答案 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 是有意义的,当保存名称键下的所有数据时:

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 :(得分:1)

这是怎么回事。使用 defaultdict

public class WebStorage : IStorage
{
  public T GetSession<T>(string key)
  {
    var result = Session[key] as T;
    return result;
  }
  public void SetSession<T>(string key, T value)
  {
    Session[key] = value;
  }
  // etc with Global
}


InitVars(new WebStorage);

它取决于数据。