我有一个列表列表,我想将其制作成字典。基本上它是一个基于日期的出生列表(年/月/日/星期几/出生)。我想统计每天的出生总数,以查看一周中每天的出生总数。
列表示例:
[2000,12,3,2,12000],[2000,12,4,3,34000]...
days_counts = {1: 23000, 2: 43000, ..., 7: 11943}
这是目前的代码:
f = open('births.csv', 'r')
text = f.read()
text = text.split("\n")
header = text[0]
data = text[1:]
for d in data:
split_data = d.split(",")
print(split_data)
所以基本上我想遍历每一天并将重复日期的出生添加到同一个键中(显然)。
编辑:我必须使用一个 if 语句来执行此操作,该语句将星期几作为字典中的键。如果找到,则将相应的出生分配为值。如果它不在字典中,则添加键和值。我无法导入任何内容或使用 lambda 函数。
请您参考如下方法:
使用 collections.Counter() object跟踪一周中每一天的计数。您还想使用 csv module处理文件解析:
import csv
from collections import Counter
per_dow = Counter()
with open('births.csv', 'r') as f:
reader = csv.reader(f)
header = next(reader)
for row in reader:
dow, births = map(int, row[-2:])
per_dow[dow] += births
我使用with 语句来管理文件对象;当 with block 结束时,Python 会自动为您关闭文件。
现在您有了一个 Counter 对象(这是一个具有一些额外功能的字典),您现在可以找到一周中出生次数最多的那一天;以下循环按从多到少的顺序打印出星期几:
for day, births in per_dow.most_common():
print(day, births)
