Функция Python string format (), использующая ноль в синтаксисе для ссылки на словарь - PullRequest
0 голосов
/ 03 апреля 2019

Я читаю документацию Python по более интересному форматированию вывода , и у них есть пример кода, который сбивает с толку.В следующем коде:

table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}

print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; Dcab: {0[Dcab]:d}'.format(table))

Jack: 4098; Sjoerd: 4127; Dcab: 8637678

Что означает 0 в {0[Jack]:d} и {0[Sjoerd]:d}.В объяснении руководства пропущен любой намек на функцию этих нулей. Этот видеоурок о форматировании строк использует тот же синтаксис, но и не дает четкого объяснения!

Если я поставлю 1 вместо 0, я получу ошибку:

IndexError: tuple index out of range

Какое отношение к этому имеет tuple?

Взято из документации:

Если у вас действительно длинная строка формата, которую вы не хотите разделять, было бы неплохо, если бы вы могли ссылаться на переменные, которые должны быть отформатированы по имени, а не по позиции.Это можно сделать, просто передав диктовку и используя квадратные скобки «[]» для доступа к клавишам

Ответы [ 2 ]

3 голосов
/ 04 апреля 2019

Вы можете просто использовать:

table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
print('Jack: {Jack}; Sjoerd: {Sjoerd}; Dcab: {Dcab}'.format(**table))
2 голосов
/ 03 апреля 2019

0 - это индекс аргумента format, т.е. в данном случае table.

Это не работает с 1, потому что есть только один аргумент, это то, что говорит "индекс кортежа вне диапазона".

Документация упоминает это здесь :

Число в скобках может использоваться для обозначения позиции объекта, переданного в метод str.format ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...