Pycharm 一直说 f 字符串中有一个不匹配的 [,但它是匹配的

问题描述 投票:0回答:1

对于一门课,我正在尝试编写一个Python程序。 其中一行尝试使用 f 字符串来报告另一个字典(“MENU”)内的字典(“espresso”)内的键(“cost”)的值。 不幸的是我不断得到:

print(f'That drink costs {MENU["espresso"['cost']]}.')
                                           ^

语法错误:f 字符串:不匹配的“[”

引发此错误的代码行如下:

print(f'That drink costs {MENU["espresso"['cost']]}.')

我正在使用 Pycharm 和 Python 3.9。

我以为我理解了这里的基本问题;出于某种原因,pycharm/python 无法理解 f 字符串的大括号内的单引号和双引号实际上并不是 print 语句的结尾,因此它将结束 print 语句并将该行的其余部分视为一堆混乱的字符,并抛出有关它们的语法错误。
但是,如果是这种情况,它应该将“]”视为不匹配,而不是我期望它认为在打印引号内的“[”,因此不需要匹配。 但它反对括号,括号应该被视为在单引号内,并且无论哪种方式都可以打印。 我还看到我尝试在 print 语句的单引号内对“cost”键使用单引号,但我必须对第一个字典的“espresso”键使用双引号。 我不知道有任何第三种方法可以表明我正在指示字典的键。 是否不可能在 f 字符串中引用嵌套字典内的值?

python dictionary f-string
1个回答
0
投票

即使在 f 字符串之外,也无法访问字典。您正在使用索引“cost”对字符串(!)“espresso”进行索引。

只需索引到外部字典,然后索引到内部字典

MENU = dict()
MENU["espresso"] = dict()
MENU["espresso"]["cost"] = 17.50
print(MENU['espresso']['cost'])         # without f-string
print(f"{MENU['espresso']['cost']}")    # with f-string
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.