从用逗号分隔的数据创建字典

2024-03-29 14:01:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“names.txt”的文件。文件的每一行都采用这种格式(年份、姓名、性别、计数)。例如(1980年,大卫,M,12)

我想读每一行,然后把它分成字典命名(年,名,性别,计数)。每次我运行程序时,它都会将(年份、姓名、性别、计数)设置为它读取的最后一个内容,而不是将其添加到字典中。我是否必须在代码中的某个地方添加一个append,这样它才能实现我想要的功能

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

Tags: 文件txt字典names格式countlinegender
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

但是,在这种情况下,在名称键下保存所有数据时,创建dictionaryy是有意义的:

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

这个怎么样。使用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))

不过,这取决于数据

相关问题 更多 >