我有一份在一天中不同时间工作的员工名单,我想计算每个人工作的天数,如下所示:
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})
