簡體   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