def construct_one_lookup_table(verb_sayer, lemmas, is_pro_verbs): finite_options = SurfaceVerb.finite_options(lemmas, is_pro_verbs) nonfinite_options = SurfaceVerb.nonfinite_options(lemmas, is_pro_verbs) sss2vv = defaultdict(list) for aa in chain(product(*finite_options), product(*nonfinite_options)): v = SurfaceVerb.from_tuple(aa) for sss in verb_sayer.get_all_say_options(v): sss = (tuple(sss[0]), tuple(sss[1])) sss2vv[sss].append(v) return sss2vv