#!/usr/bin/env python3
import sys
from collections import OrderedDict as od
# read data in the file first, create data dictionary of column lists
data = od()
with open(sys.argv[1]) as f:
for line in f:
columns = line.strip().split()
how_many = len(columns)-1
if columns[0] not in data.keys():
data[ columns[0] ] = [ [] for i in range(how_many) ]
for index in range(how_many):
data[ columns[0] ][index].append( int(columns[index+1]) )
# post process all the created lists of lists by applying max() on each
for item in sorted(data.keys()):
print(item,end=" ")
for array in data[item]:
print(max(array),end=" ")
print("")
С примером ввода, предоставленным OP:
$./columns_max.py input.txt
1 40 76
2 20 98
3 34 33
4 50 100
5 3 46
С расширенным примером в ответе Романа Перехреста:
$./columns_max.py input.txt
1 40 76 78 99
2 20 98 98 93
3 34 33 77 111
4 50 100 33 66
5 3 46 44 9
Основная идея состоит в том, что мы создаем словарь из элементов первого столбца. Таким образом, в словаре у нас будут ключи 1,2,3,4 и 5. Каждое соответствующее значение для элемента словаря представляет собой список списков, где каждому под-списку соответствует столбец. Итак, для ключа 1 у нас будет список с двумя списками, где первый список предназначен для всех элементов столбца 2, а второй список — для всех элементов столбца 3. В основном это:
('1', [ ['10', '4', '40'], ['15', '22', '76']] )
Есть очень хорошая функция max()
, которая позволяет нам взять числовой список и извлечь из него самый большой элемент. Все, что нам нужно сделать, это перебрать каждый ключ, удалить все списки и применить к ним функцию max()
.
У меня сложилось впечатление, что единственным «большим» дистрибутивом с текущей поддержкой 32 -бит PowerPC является Gentoo . Это дистрибутив на основе исходного кода -, который соответствует вашим критериям.
Вы по-прежнему можете получать пакеты Debian из порта powerpc
, но это больше не выпущенный дистрибутив — что фактически означает, что вам нужно отслеживать тестирование или нестабильность.