python列表和计数值

python列表和计数值,python,iterator,counter,Python,Iterator,Counter,在下面给出的示例数据(存储在文件中)中,我需要以最快的方式在每个“项目”类别中找到不同的“ID”。我可以通过遍历每一行,然后找到所有的项目集,然后计数来实现这一点,但我正在寻找一种更快的方法,比如“Counter”或“itemgetter” “infle.txt” 我需要像下面这样的输出 item count ids pancreas 5 001, 111, 222, 444, 555 liver 5 111,222,444,555,001 Anemia 2 2

在下面给出的示例数据(存储在文件中)中,我需要以最快的方式在每个“项目”类别中找到不同的“ID”。我可以通过遍历每一行,然后找到所有的项目集,然后计数来实现这一点,但我正在寻找一种更快的方法,比如“Counter”或“itemgetter”

“infle.txt”

我需要像下面这样的输出

item    count   ids
pancreas    5   001, 111, 222, 444, 555
liver   5   111,222,444,555,001
Anemia  2   222,444

我会将defaultdict与
集合一起使用

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])

你能不能把你做过的作业贴出来,而不是仅仅贴上你的作业?计数器不是你想要的;您正在收集所有唯一的ID,因此收集的ID的长度也是您的计数。@MartijnPieters--谢谢。我想我修好了。无论如何,这个想法应该足够清楚。。。我使用
ids
来避免隐藏
id
——但这是一个不好的变量名,因为它意味着不止一个。已更改为
my\u id
。谢谢。工作得很好。我需要检查它在非常大的文件上的行为。
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])