python列表和计数值
在下面给出的示例数据(存储在文件中)中,我需要以最快的方式在每个“项目”类别中找到不同的“ID”。我可以通过遍历每一行,然后找到所有的项目集,然后计数来实现这一点,但我正在寻找一种更快的方法,比如“Counter”或“itemgetter” “infle.txt” 我需要像下面这样的输出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
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])