繁体   English   中英

Python匹配大小写字典键

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM