用于打印的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我意识到我太忙于解释原因了,以至于忘了回答您的具体问题。是的,就是这样。