在使用match case (python 3.10.4)时获得以下错误。我正试着用字典键来使案例模块化。
TypeError:调用匹配模式必须是类型
keys = { 'A': 'apple',
'B' : 'banana'}
fruit = 'A'
match fruit:
case keys.get('A'):
print('apple')
case keys.get('B'):
print('Banana')发布于 2022-06-15 21:40:51
模式不是一种表达,而是一种句法契约。不能调用dict方法作为模式的一部分。您需要在match语句之前获得值。有点像
from types import SimpleNamespace
values = SimpleNamespace(**{v: k for k, v in keys.items()})
match fruit:
case values.apple:
print('apple')
case values.banana:
print('Banana')但是,这里没有特别的理由使用match语句;一个简单的if语句就足够了:
if fruit == keys.get('A'):
print('apple')
elif fruit == keys.get('B'):
print('Banana')从语法上讲,match语句试图将keys.get('A')视为类模式,keys.get引用类型,'A'作为用于实例化类型的文字参数。例如,您可以编写
x = 6
match x:
case int(6):
print("Got six")其中,类模式int(6)与值6匹配。
https://stackoverflow.com/questions/72638083
复制相似问题