# -*- coding: utf-8 -*-
_五十一聲類映射表 = (
('方', '幫', '三'),
('博', '幫', None),
('芳', '滂', '三'),
('普', '滂', None),
('符', '並', '三'),
('蒲', '並', None),
('武', '明', '三'),
('莫', '明', None),
('都', '端', None),
('他', '透', None),
('徒', '定', None),
('奴', '泥', None),
('陟', '知', None),
('丑', '徹', None),
('直', '澄', None),
('女', '孃', None),
('子', '精', '三'),
('作', '精', None),
('七', '清', '三'),
('倉', '清', None),
('疾', '從', '三'),
('昨', '從', None),
('息', '心', '三'),
('蘇', '心', None),
('徐', '邪', None), # 僅三等
('側', '莊', None),
('初', '初', None),
('士', '崇', None),
('所', '生', None),
('俟', '俟', None), # 俟母獨立,故實為五十二個
('之', '章', None),
('昌', '昌', None),
('食', '船', None),
('式', '書', None),
('時', '常', None),
('居', '見', '三'),
('古', '見', None),
('去', '溪', '三'),
('苦', '溪', None),
('渠', '羣', None), # 僅三等
('魚', '疑', '三'),
('五', '疑', None),
('於', '影', '三'),
('烏', '影', None),
('許', '曉', '三'),
('呼', '曉', None),
('胡', '匣', None),
('于', '云', None),
('以', '以', None),
('力', '來', '二三'), # 來母二等字實際反切上字多為三等
('盧', '來', None),
('而', '日', None),
)
[文件]
def 母與等到類(母: str, 等: str) -> str:
'''
由母與等確定五十一聲類。
注意五十一聲類中俟母獨立,故實為五十二個。
:param 母: 聲母
:type 母: str
:param 等: 等
:type 等: str
Example:
>>> 母與等到類('見', '二')
'古'
>>> 母與等到類('並', '三')
'符'
'''
for 聲類, 母條件, 等條件 in _五十一聲類映射表:
if 母 == 母條件 and (等條件 is None or 等 in 等條件):
return 聲類
raise ValueError(f'無法確定五十一聲類:{母}母{等}等')