我有一个文件,有几个列,如:
PAIR 1MFK 1 URANIUM 82 HELIUM 112 2.5506
PAIR 2JGH 2 PLUTONIUM 98 POTASSIUM 88 5.3003
PAIR 345G 3 SODIUM 23 CARBON 14 1.664
PAIR 4IG5 4 LITHIUM 82 ARGON 99 2.5506
PAIR 234G 5 URANIUM 99 KRYPTON 89 1.664
现在我要做的是读取最后一列并迭代重复的值并生成一个包含两列'VALUE' & 'NO OF TIMES REPEATED'
的输出文件。在
我试过:
^{pr2}$我被困在这里了。
请帮忙。!在
所以使用}),您不需要存储行来计数它们。
collections.Counter
来计算每个值出现的次数,而不是defaultdict
。(根本不清楚您要用defaultdict
做什么,而且您的初始化也不会起作用;defaultdict
是用一个将创建默认值的可调用函数构造的。在您的例子中,您显然想到的默认值是一个空列表,因此您将使用list
来初始化{Counter
会自动为您计数。在另外,提前处理整个文件有点难看,因为您可以直接遍历文件并获取行,这将为您完成部分处理。虽然您实际上可以在
Counter
创建中自动执行该迭代。在这里有一个完整的解决方案:
发布的代码有许多问题。列表理解中不允许使用while循环。defaultdict的参数应该是list而不是line。以下是代码的修复版本:
另一种方法是使用collections.Counter方便地求出重复次数的总和。这样可以简化代码:
^{pr2}$相关问题 更多 >
编程相关推荐