2016-03-05 1 views
0

У меня есть следующий код:Эквидистантная печать в питоне

for k in sorted(data): 
    print '%s:\t\t%s' % (k, data[k]) 

который печатает для меня:

Date:  2016-03-05 
NumMovieTerritories:  164 
NumMovieTerritoriesLive:  111 
NumMovieTitles:  115393 
NumMovieTitlesLive:  103785 
NumProviders:  1411 
NumProvidersLive:  1136 
NumTVTerritories:  36 
NumTVTerritoriesLive:  6 
NumTVTitles:  424321 
NumTVTitlesLive:  392832 
NumTerritoryAvails:  1837294 
NumTerritoryAvailsLive:  1597407 

Как бы сделать это таким образом, что он печатает как оглавления:

Date:      2016-03-05 
NumMovieTerritories:  164 
NumMovieTerritoriesLive: 111 
NumMovieTitles:    115393 
NumMovieTitlesLive:   103785 
NumProviders:    1411 
NumProvidersLive:   1136 
NumTVTerritories:   36 
NumTVTerritoriesLive:  6 
NumTVTitles:    424321 
NumTVTitlesLive:   392832 
NumTerritoryAvails:   1837294 
NumTerritoryAvailsLive:  1597407 

ответ

3

Прежде всего, вам нужно знать, насколько вам нужен ваш текст. Для этого вам нужно найти максимальную длину в словаре. Мы можем сделать это с помощью max_length = max(len(k) for k in data). Затем мы можем использовать str.ljust(), чтобы поместить строку в это поле. Это конечный результат:

max_length = max(len(k) for k in data) 
for k in sorted(data): 
    print("{}: {}".format(k.ljust(max_length), data[k])) 
+0

Можно получить точный формат, если последняя строка изменится на 'печати ("{}: {} {}". Формат (к, '' * (max_length - Len (к)), data [k])) 'Прохладно, чтобы узнать о' ljust() 'хотя! – Mark

Смежные вопросы