l = [('1232', '07-10-13', 'yes'), ('1111', '07-10-13', 'no'), ('90872', '07-05-13', 'no'), ('63563', '07-06-13', 'no'), ('11111', '07-06-13', 'yes')]
res = {}
for _, k, v in l:
if k not in res:
res[k] = [[v], 1]
else:
res[k][0].append(v)
res[k][1] += 1
print res
您还可以使用itertools:
from itertools import groupby
from operator import itemgetter
l = [('1232', '07-10-13', 'yes'), ('1111', '07-10-13', 'no'), ('90872', '07-05-13', 'no'), ('63563', '07-06-13', 'no'), ('11111', '07-06-13', 'yes')]
res = {}
for k, v in groupby(l, itemgetter(1)):
t = [x[2] for x in v]
res[k] = [t, len(t)]
print res
或只是一个班轮:)
res = {k[0]: [k[1], len(k[1])] for k in [(date, [x[2] for x in gr]) for date, gr in groupby(l, itemgetter(1))]}
检查此链接Python group by
您的描述有点不清楚。你能提供样本输出吗?另外,你有什么尝试? –
我想画一个图。因为我想要相似的日期和状态。我有一个如上所示的数据列表。 – user1939565
我的意思是给你一个你想要的计数样本的样本。我猜你想要这样的东西:'[('07 -10-13','是',1),...]'? –