Есть несколько проблем, когда вы начинаете копать:
Элемент, о котором идет речь, называется "element_index", который определен как целое число.
Проблема 1: если пользователи не перейдут по ссылке из "целого числа" на справочное руководство по языку, они не будут знать, что -1 считается выражением, а не целым числом. Кстати, любой, кто испытывает соблазн сказать «работает как документально», должен сначала увидеть проплем 7: -)
Предпочтительное решение: измените определение так, чтобы «element_index» мог иметь необязательный «-» перед целым числом.
Это целое число, верно? Не так быстро ... позже документы говорят, что "выражение формы '[index]' выполняет поиск по индексу, используя __getitem__()
"
Проблема 3: Должен сказать «[element_index]» (индекс не определен).
Проблема 4: Не все знают, что делает __getitem__()
. Нужны более четкие документы.
Так что мы можем использовать здесь как dict, так и целое число? Да, с одной или двумя проблемами:
element_index является целым числом? Да, это работает с диктовкой:
>>> "{0[2]}".format({2: 'int2'})
'int2'
Кажется, что мы также можем использовать нецелые строки, но для этого требуется более явная документация (проблема 5):
>>> "{0[foo]}".format({'foo': 'bar'})
'bar'
Но мы не можем использовать диктовку с ключом типа «2» (проблема 6):
>>> "{0[2]}".format({'2': 'str2'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 2
>>> "{0['2']}".format({'2': 'str2'})
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: "'2'"
Проблема 7: То, что «integer» действительно должно быть задокументировано как «decimalinteger» ... 0x22 и 0b11 рассматриваются как str, а 010 («octalinteger») рассматривается как 10, а не 8:
>>> "{0[010]}".format('0123456789abcdef')
'a'
Обновление: PEP 3101 рассказывает правдивую историю:
"" "
Правила разбора ключа элемента очень просты. Если он начинается с цифры, то он рассматривается как число, в противном случае он используется как строка.
Поскольку ключи не разделены кавычками, невозможно задать произвольные ключи словаря (например, строки "10" или ": -]") из строки формата.
"" "