Я использую эту простую функцию:Pythonic способ напечатать таблицу
def print_players(players):
tot = 1
for p in players:
print '%2d: %15s \t (%d|%d) \t was: %s' % (tot, p['nick'], p['x'], p['y'], p['oldnick'])
tot += 1
, и я не уверен, если предположить, заусеницы не более 15 символов.
Я бы хотел, чтобы каждый «столбец» выровнялся, есть ли какой-то синтаксический сахар, позволяющий мне делать то же самое, но оставляя столбцы никнеймов выровненными слева, а не выровненными по правому краю, без нарушения столбца справа?
Эквивалент, уродливее, код будет:
def print_players(players):
tot = 1
for p in players:
print '%2d: %s \t (%d|%d) \t was: %s' % (tot, p['nick']+' '*(15-len(p['nick'])), p['x'], p['y'], p['oldnick'])
tot += 1
Спасибо всем, вот окончательная версия:
def print_players(players):
for tot, p in enumerate(players, start=1):
print '%2d:'%tot, '%(nick)-12s (%(x)d|%(y)d) \t was %(oldnick)s'%p
Что означает '** значения'? Я видел '**' только в объявлении параметров (объявление функции/метода). –
@Andrea: он передает пары ключ/значение словаря в виде ряда именованных аргументов функции. Итак, если 'd = {'a': 1, 'b': 2}', то 'f (** d)' эквивалентно 'f (a = 1, b = 1)'. – Stephan202
Я этого не знал, спасибо вам большое! –