我可以在代码中使用全局字典,如下所示:
group = {
'vowel' : ['aa', 'ae', 'ah', 'ao', 'eh', 'er', 'ey', 'ih', 'iy', 'uh', 'uw', 'o'],
'consonant' : ['b', 'ch', 'd', 'dh', 'dx', 'f', 'g', 'hh', 'jh', 'k', 'l', 'm', 'n', 'ng', 'p', 'r', 's', 'sh', 't', 'th', 'v', 'w', 'y', 'z', 'zh']
}
它有一个键和多个值。我需要这个字典,因为我必须确保音素是元音或辅音,以便在代码中继续进行。稍后在代码中我必须做类似的事情,
if phoneme == vowel :
do this
else :
do that (for consonants)
谢谢。
答案 0 :(得分:11)
使用集合更有效(如果需要,可以将它们分组在dict中):
vowels = set(['aa', 'ae', 'ah', 'ao', 'eh', 'er', 'ey', 'ih', 'iy', 'uh', 'uw', 'o'])
consonants = set(['b', 'ch', 'd', 'dh', 'dx', 'f', 'g', 'hh', 'jh', 'k', 'l', 'm', 'n', 'ng', 'p', 'r', 's', 'sh', 't', 'th', 'v', 'w', 'y', 'z', 'zh'])
if phoneme in vowels:
do this
else :
do that (for consonants)
答案 1 :(得分:3)
是的,你可以这样做,但使用它的代码应该类似于:
if phoneme in group["vowel"]:
# ...
也就是说,您可能需要考虑使用set()
而不是列表来为您提供更快的查找,即
group = {
'vowel' : set(('aa', 'ae', 'ah', 'ao', 'eh', 'er', 'ey', 'ih', 'iy', 'uh', 'uw', 'o')),
'consonant' : set(('b', 'ch', 'd', 'dh', 'dx', 'f', 'g', 'hh', 'jh', 'k', 'l', 'm', 'n', 'ng', 'p', 'r', 's', 'sh', 't', 'th', 'v', 'w', 'y', 'z', 'zh')),
}
答案 2 :(得分:3)
您可以创建一个“反向”字典,其操作为值:
import operator as op
group = {
'vowel' : ['aa', 'ae', 'ah', 'ao', 'eh', 'er', 'ey', 'ih', 'iy', 'uh', 'uw', 'o'],
'consonant' : ['b', 'ch', 'd', 'dh', 'dx', 'f', 'g', 'hh', 'jh', 'k', 'l', 'm', 'n', 'ng', 'p', 'r', 's', 'sh', 't', 'th', 'v', 'w', 'y', 'z', 'zh']
}
# define methods functionVowel and functionConsonant
action = {'vowel': lambda x: op.methodcaller(functionVowel, x),
'consonant': lambda x: op.methodcaller(functionConsonant, x)}
action_phoneme = dict((char, action[k]) for k,v in group.iteritems() for phoneme in v)
然后直接打电话给他们:
action_phoneme[phoneme]()
答案 3 :(得分:1)
是的,但您的代码将类似于:
if phoneme in group['vowel'] :
do this
else :
do that (for consonants)
答案 4 :(得分:0)
您应该使用列表而不是dicts来执行此操作。
vowel = ['aa', 'ae', 'ah', 'ao', 'eh', 'er', 'ey', 'ih', 'iy', 'uh', 'uw', 'o']
consonant = ['b', 'ch', 'd', 'dh', 'dx', 'f', 'g', 'hh', 'jh', 'k', 'l', 'm', 'n', 'ng', 'p', 'r', 's', 'sh', 't', 'th', 'v', 'w', 'y', 'z', 'zh']
所以你可以确定:
if phoneme is in vowel:
do this
else:
do that