首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python匹配案例字典键

Python匹配案例字典键
EN

Stack Overflow用户
提问于 2022-06-15 21:33:41
回答 1查看 338关注 0票数 2

在使用match case (python 3.10.4)时获得以下错误。我正试着用字典键来使案例模块化。

TypeError:调用匹配模式必须是类型

代码语言:javascript
复制
keys = { 'A': 'apple',
         'B' : 'banana'}
fruit = 'A'
match fruit:
    case keys.get('A'):
        print('apple')
   
    case keys.get('B'):
        print('Banana')
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-15 21:40:51

模式不是一种表达,而是一种句法契约。不能调用dict方法作为模式的一部分。您需要在match语句之前获得值。有点像

代码语言:javascript
复制
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语句就足够了:

代码语言:javascript
复制
if fruit == keys.get('A'):
    print('apple')
elif fruit == keys.get('B'):
    print('Banana')

从语法上讲,match语句试图将keys.get('A')视为类模式,keys.get引用类型,'A'作为用于实例化类型的文字参数。例如,您可以编写

代码语言:javascript
复制
x = 6

match x:
    case int(6):
        print("Got six")

其中,类模式int(6)与值6匹配。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72638083

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档