Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 2
1

Форматирование вывода

27.01.2016, 19:27. Просмотров 1602. Ответов 3

Здравствуйте.

Решаю задачу в одном из онлайн-курсов по Hadoop. Не получается правильно вывести ответ. В Python новичок.

Задача:

Реализуйте mapper для задачи Cross-Correlation, который для каждого объекта из кортежа создает stripe.

Mapper принимает на вход кортежи - строки, состоящие из объектов, разделенных пробелом.

Mapper пишет данные в виде key / value, где key - объект, value - соответствующий stripe (пример: a:1,b:2,c:3)

Sample Input:

a b
a b a c

Sample Output:

a b:1
b a:1
a b:1,c:1
b a:2,c:1
a b:1,c:1
c b:1,a:2

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
import sys
input = sys.stdin
for line in input:
    m = line.strip().split()
    l = len(m)
    H={}
    for i in range(l):
        for p in range(l):
            if m[i]!=m[p] :                
                H[m[p]]=H.setdefault(m[p],0)+1
        print (m[i],'\t',sep = '', end = '')
        for key in H.keys(): print (key,H[key],sep = ':',end = ',')
        H.clear()
нужно, чтобы после вывода последнего ключа-значения, выводилась не запятая, а переход на новую строку. Не могу сообразить как это сделать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.01.2016, 19:27
Ответы с готовыми решениями:

Форматирование вывода
Снова решаю тесты на сайте где изучаю курсы, и снова не совсем понятно, почему мой вариант не...

Форматирование вывода в c++
Вот к примеру код из C#: Console.WriteLine(" {0} plus {1} ravno {2}", i, j, i+j); Как...

Форматирование вывода
Есть простенькая программа анализирующая частоту употребления слов в тексте, результат своей работы...

Форматирование вывода
Есть такой код, который ищет первый минимальный элементы на пересечении строки и столбца: #include...

3
Модератор
Эксперт NIX
2756 / 2012 / 672
Регистрация: 02.03.2015
Сообщений: 6,452
27.01.2016, 20:35 2
Лучший ответ Сообщение было отмечено rbol как решение

Решение

Python
12
print(*('{}:{}'.format(item) for item in H.items()), sep=',')
Добавлено через 5 минут
P.S. input — это команда. Не стоит так называть переменную.
1
0 / 0 / 0
Регистрация: 23.11.2015
Сообщений: 2
27.01.2016, 21:01  [ТС] 3
Спасибо! Я сам натыкался в поисках решения на str.format, но изобразить правильный формат сам не сумел. Подставил индексы в вашу строку, решение принято.

Python
1
print (*('{0[0]}:{0[1]}'.format(item) for item in H.items()), sep=',')
По поводу input хорошее замечание, учту.
0
0 / 0 / 2
Регистрация: 28.05.2015
Сообщений: 5
27.01.2016, 21:08 4
Если выводить строкой, то можно так:

Python
1
2
3
4
5
6
7
user_input= 'a b a c'
user_output=''
user_list=user_input.split()
 
for i in user_list: 
    user_output+=i+':'+str(user_list.count(i))+','
print(user_output[:-1])
Не обязательно делать range(), списки тоже можно итерировать. И обратите внимание на функцию x.count(y).

С уважением!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.01.2016, 21:08

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Форматирование вывода
почему правая граница оказывается на месте 20 знака? значение width=20,const int П.5.18.Правил ...

Форматирование вывода
printf("%*s",strlen(name_string),name_string) компилятор жалуться что strlen() возвращает не тот...

Форматирование вывода
Здравствуйте помогите разобраться с форматированием вывода, а то совсем беда( using System; using...

Форматирование вывода - ошибки
Пожалуйста, помогите исправить ошибки в коде. Есть три переменные. А и В изменяются с течением...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.