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