Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于打印的Python字典键格式不适用于数字字符串_Python_Dictionary_Printing - Fatal编程技术网

用于打印的Python字典键格式不适用于数字字符串

用于打印的Python字典键格式不适用于数字字符串,python,dictionary,printing,Python,Dictionary,Printing,我从中学到你可以做到这一点: person = { 'first': 'Tobin', 'age':20 } print('{first} is {age} years old'.format(**person)) # Output: Tobin is 20 years old person = { 'first':'Tobin', 'last': 'Brown', 'age':20 } print('{first} {last} is {age} y

我从中学到你可以做到这一点:

person = {
    'first': 'Tobin',
    'age':20
}

print('{first} is {age} years old'.format(**person))
# Output: Tobin is 20 years old

person = {
    'first':'Tobin',
    'last': 'Brown',
    'age':20
}
print('{first} {last} is {age} years old'.format(**person))
# Output: Tobin Brown is 20 years old
但是,当我的字典包含数字键时,它不起作用:

>>> d = {'123': 123}
>>> d
{'123': 123}
>>> print('{123} is 123 value'.format(**d))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IndexError: tuple index out of range
这适用于Python2和Python3。
这是一个已知的限制吗?

一般来说,有三种方法可以指示应将某些外部表达式插入到名为format方法的字符串中:

隐式地,按位置 {},{},{}。格式为“休伊”,“杜威”,“路易”给出“休伊,杜威,路易”

明确地,按位置 “{2},{1},{0}”。格式“休伊”,“杜威”,“路易”给出“路易,杜威,休伊”

明确地,通过名字 “{first},{second},{third}”。第一个='huey',第二个='dewey',第三个='louie'给出'huey,dewey,louie'

回想一下,在Python中,关键字参数和变量名不能以数字开头

这个限制与我们目前的情况有关:如果这样的关键字参数是可能的,我们将无法解决案例2和案例3之间的歧义;{0}应该引用未命名附加参数的第一个元素还是关键字参数0

由于不可能使用非字符串关键字参数,因此不存在歧义,大括号内的整数始终表示第二种情况。因此,在您的代码中,{123}实际上是指传递给format的参数元组的第124个元素,当然没有这样的元素

为了完整性,让我们看看Python 3.6中引入的f字符串:

insert_me = 'cake'
print(f'{insert_me}')
输出:

cake
我们不能这样做:

123 = 'cake'  # illegal variable definition
print(f'{123}')

因此,Python将大括号中的123解释为整数文本,并打印“123”。

一般来说,有三种方法指示应将某些外部表达式插入到名为format方法的字符串中:

隐式地,按位置 {},{},{}。格式为“休伊”,“杜威”,“路易”给出“休伊,杜威,路易”

明确地,按位置 “{2},{1},{0}”。格式“休伊”,“杜威”,“路易”给出“路易,杜威,休伊”

明确地,通过名字 “{first},{second},{third}”。第一个='huey',第二个='dewey',第三个='louie'给出'huey,dewey,louie'

回想一下,在Python中,关键字参数和变量名不能以数字开头

这个限制与我们目前的情况有关:如果这样的关键字参数是可能的,我们将无法解决案例2和案例3之间的歧义;{0}应该引用未命名附加参数的第一个元素还是关键字参数0

由于不可能使用非字符串关键字参数,因此不存在歧义,大括号内的整数始终表示第二种情况。因此,在您的代码中,{123}实际上是指传递给format的参数元组的第124个元素,当然没有这样的元素

为了完整性,让我们看看Python 3.6中引入的f字符串:

insert_me = 'cake'
print(f'{insert_me}')
输出:

cake
我们不能这样做:

123 = 'cake'  # illegal variable definition
print(f'{123}')

因此,Python将大括号中的123解释为整数文本,并打印“123”。

您可以按如下方式应用它

   print('{} is 123 value'.format(*d))

它可以同时适用于Python2和Python3

   print('{} is 123 value'.format(*d))

它可以同时适用于Python2和Python3

我建议您检查这个我建议您检查这个,这非常有意义!print查找位置变量的元组时,却发现它已到了末尾,无法检索变量[123]。kakyo我意识到我太忙于解释原因了,以至于忘了回答您的具体问题。是的,就是这样。这很有道理!print查找位置变量的元组时,却发现它已到了末尾,无法检索变量[123]。kakyo我意识到我太忙于解释原因了,以至于忘了回答您的具体问题。是的,就是这样。