Python - печать в строке от dict - PullRequest
0 голосов
/ 21 февраля 2019

Я новичок в Python, и у меня возникают трудности с печатью.Я сделал программу, которая хранит названия и цены в словаре.(Например: {"PERSON_1":"50","PERSON_2":"75","PERSON_WITH_EXTREMELY_LONG_NAME":"80"} Теперь проблема в том, что я хочу иметь возможность печатать ключи и их предполагаемые значения в красивой схеме. Я использовал код:

 for i in eter.eters:
        print(i + "\t | \t" + str(eter.eters[i]))

, где eter.eters - мой словарьПроблема в том, что некоторые имена намного длиннее других, поэтому вкладки не совпадают. Как и мой заголовок: «Имена» | «Цена» должны соответствовать приведенной ниже информации. Я уже посмотрел некоторыерешения, но я не совсем понимаю те, которые я нашел. Желаемый результат:

**********************************************************************
               De mensen die blijven eten zijn:
**********************************************************************
Naam                            |      bedrag
----------------------------------------------------------------------
PERSON 1                        |      50
PERSON 2                        |      75
PERSON WITH EXTREMELY LONG NAME |      80
**********************************************************************

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вы можете попытаться получить все имена и найти максимальную длину.Затем покажите каждое имя с помощью специального отступа вместо табулятора (\t).Этот код должен объяснить:

>>> d={"Marius":"50","John":"75"}
>>> d
{'Marius': '50', 'John': '75'}
>>> for i in d:
...  print(i)
... 
Marius
John
>>> d = {"Marius":"50","John":"75"}
>>> m = 0
>>> for i in d:
...  m = max(m, len(i))
... 
>>> m
6 # now we know the place reserved for Name column should be 6 chars width
>>> for i in d:
...  print( i + (m-len(i))*' ' , d[i]) # so add to the name space char that fit this 6 chars space
... 
Marius 50
John   75
0 голосов
/ 21 февраля 2019

попробуйте это:

с учетом eter.eters ваш словарь

print('%-35s | %6s' % ('Names', 'Price')) # align to the left

for k in eter:
    print('%-35s | %6s' % (k,eter[k]))

или

print("{0:<35}".format('Name')+'|'+"{0:>6}".format('Price'))

for k in eter:
    print("{0:<35}".format(k)+'|'+"{0:>6}".format(eter.eters[k]))
...