按每行中的图案数量对行进行排序

时间:2015-07-29 23:51:59

标签: sorting

我有以下文件 如何根据每行中找到的“/”数进行排序

A / B / C / d / E / F A / K / L A / M / M / P B / H / S / I / L / M 的b / h B / E / F / G / P / L / I 易于 A / K / S B / P /吨 B / K / S

这些行分类如下。

B / E / F / G / P / L / I A / B / C / d / E / F B / H / S / I / L / M A / M / M / P A / K / L 易于 A / K / S B / P /吨 B / K / S B / H

实现这一目标的最佳方法是什么?

谢谢, 拉维

1 个答案:

答案 0 :(得分:0)

一种方法是一次读一行,并计算多少' /'在那条线上。 然后将一个元素插入一个hashmap,其中key是该行的id(可以是顺序的(1到N)),然后按值对hashmap进行排序。如果你正在使用Python,这看起来像this。按顺序迭代键将为您提供相应行的索引。

Python中以排序顺序打印行的示例:

import operator
def sort_by_char(lines, ch):
    """ Given a list of strings and a character, print out the lines sorted by how many characters (ch) it contains """
    hashmap = {}
    for idx in range(len(lines)):
        line = lines[idx]
        count = line.count(ch)
        hashmap[idx] = count

    sorted_lines = sorted(hashmap.items(), key=operator.itemgetter(1))

    for i in range(len(lines)):
        print lines[sorted_lines[i][0]]

或者,您可以使用计数作为键,使用行作为值。