-3

在下面给出的示例数据(存储在文件中)中,我需要以最快的方式在每个“项目”类别中找到不同的“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
4

1 回答 1

3

我会使用 defaultdict 和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])
于 2012-10-10T19:45:55.607 回答