在下面给出的样本数据中(存储在文件中),我需要以尽可能最快的方式在每个“项目”类别中找到不同的“ID”。我可以通过遍历每一行,然后查找所有项目集然后计数来做到这一点,但我正在寻找一种更快的方法,例如'Counter'或'itemgetter'。
“infile.txt”
id item
444 Anemia
444 liver
444 Anemia
444 Anemia
222 liver
222 pancreas
222 liver
222 Anemia
444 pancreas
444 pancreas
444 Anemia
001 Iiver
001 pancreas
111 pancreas
111 liver
111 liver
111 pancreas
555 pancreas
555 liver
555 pancreas
555 liver
555 pancreas
555 liver
我需要输出类似于以下内容
item count ids
pancreas 5 001, 111, 222, 444, 555
liver 5 111,222,444,555,001
Anemia 2 222,444
答案 0 :(得分:3)
我使用带有set
from collections import defaultdict
d = defaultdict(set)
with open(datafile) as f:
for line in f:
my_id,item = line.split()
d[item].add(my_id)
for item in d:
print item,len(d[item]),sorted(d[item])