Skip to main content
 首页 » 编程设计

python之计算工作天数,即计算 python 列表中的项目

2025年05月04日9zhengyun_ustc

我有一份在一天中不同时间工作的员工名单,我想计算每个人工作的天数,如下所示:

FOO:3 巴兹:3 NOM:1 等......

这是我接收原始数据的方式:

my_list = [('NOM', datetime.date(2030, 1, 1)), 
 ('BAR', datetime.date(2019, 4, 8)), 
 ('HAM', datetime.date(2019, 4, 8)), 
 ('FOO', datetime.date(2019, 4, 8)), 
 ('BAZ', datetime.date(2019, 4, 8)), 
 ('BAR', datetime.date(2019, 4, 10)), 
 ('BAZ', datetime.date(2019, 4, 10)), 
 ('FOO', datetime.date(2019, 4, 10)), 
 ('HAM', datetime.date(2019, 4, 10)), 
 ('HAM', datetime.date(2019, 4, 10)), 
 ('FOO', datetime.date(2019, 4, 10)), 
 ('BAR', datetime.date(2019, 4, 10)), 
 ('BAZ', datetime.date(2019, 4, 10)), 
 ('BAZ', datetime.date(2019, 4, 11)), 
 ('HAM', datetime.date(2019, 4, 11)), 
 ('BAR', datetime.date(2019, 4, 11)), 
 ('FOO', datetime.date(2019, 4, 11)), 
 ('BAZ', datetime.date(2019, 4, 11)), 
 ('FOO', datetime.date(2019, 4, 11)), 
 ('BAR', datetime.date(2019, 4, 11)), 
 ('HAM', datetime.date(2019, 4, 11)), 
 ('FOO', datetime.date(2019, 4, 11)), 
 ('BAZ', datetime.date(2019, 4, 11)), 
 ('BAR', datetime.date(2019, 4, 11)), 
 ('HAM', datetime.date(2019, 4, 11)), 
 ('FOO', datetime.date(2019, 4, 11)), 
 ('BAZ', datetime.date(2019, 4, 11)), 
 ('BAR', datetime.date(2019, 4, 11)), 
 ('HAM', datetime.date(2019, 4, 11))] 

我设法将列表剥离为每个人的唯一日期,如下所示: a = Counter(set(dictio)) 它在一天内为一个人去除了重复项:

Counter({('HAM', datetime.date(2019, 4, 8)): 1, 
         ('HAM', datetime.date(2019, 4, 10)): 1, 
         ('HAM', datetime.date(2019, 4, 11)): 1, 
         ('BAR', datetime.date(2019, 4, 8)): 1, 
         ('BAR', datetime.date(2019, 4, 10)): 1, 
         ('BAR', datetime.date(2019, 4, 11)): 1, 
         ('FOO', datetime.date(2019, 4, 8)): 1, 
         ('FOO', datetime.date(2019, 4, 10)): 1, 
         ('FOO', datetime.date(2019, 4, 11)): 1, 
         ('BAZ', datetime.date(2019, 4, 8)): 1, 
         ('BAZ', datetime.date(2019, 4, 10)): 1, 
         ('BAZ', datetime.date(2019, 4, 11)): 1, 
         ('NOM', datetime.date(2030, 1, 1)): 1}) 

这就是我卡住的地方:我从上面转到:

HAM:3 
BAR:3 
FOO:3 
BAZ:3 
NOM:1 

请您参考如下方法:

你可以用

import collections 
collections.Counter(x for x , y in set(my_list) ) 
Out[251]: Counter({'BAR': 3, 'BAZ': 3, 'FOO': 3, 'HAM': 3, 'NOM': 1})