[英]Python match case dictionary keys
使用匹配大小写时出现以下错误(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')
模式不是表达; 这是一个句法契约。 您不能将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
匹配。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.