根据一行

时间:2016-04-12 23:45:46

标签: python line

对于矩阵如下

    A  20  200
    A  10  150
    B  60  200
    B  80  300
    C  90  400
    C  30  300

我的目的是:对于每个类别(在第1栏中标记为A,B,C ......),我想找到最小数量和最大数量(作为最大范围)。所以期待看到:

A  10  200
B  60  300
C  30  400

那我怎么能用Python?

1 个答案:

答案 0 :(得分:1)

我会从:

开始
maxs, mins = {}, {}
for line in fd:
    category, small, big = line.split()
    if category not in maxs or big > maxs[category]:
        maxs[category] = big
    if category not in mins or small < mins[category]:
        mins[category] = small

# final printings
for category in maxs:
    print(category, mins[category], maxs[category], sep='\t')

返回dicts,可以使用{c: (mins[c], maxs[c]) for c in maxs}合并。

此代码假定可迭代的行名为fd。可以是一个打开的文件,包含原始文本中的矩阵。

如果订单很重要,一个好的解决方案是使用OrderedDict代替minsmaxs的常规字典。