Skip to main content
 首页 » 编程设计

python之你如何用每个列表中的 2 个元素制作字典

2025年05月04日24zlslch

我有一个列表列表,我想将其制作成字典。基本上它是一个基于日期的出生列表(年/月/日/星期几/出生)。我想统计每天的出生总数,以查看一周中每天的出生总数。

列表示例:

[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)