def test_invert_dict(self): data = {1: [1, 2, 3], 2: [1, 3]} new_dict = maps.invert_mapping(data) self.assertEqual(new_dict, {1: [1, 2], 2: [1], 3: [1, 2]}) data2 = {1: 'a', 2: 'b', 3: 'c'} new_dict2 = maps.invert_injective_mapping(data2) self.assertEqual(new_dict2, {'a': 1, 'b': 2, 'c': 3})
voicing_map = {} for kana in scripts.get_script(scripts.Script.Hiragana): ord_kana = ord(kana) if kana in voiced_line: voicing_map[kana] = [unichr(ord_kana+1)] elif kana in double_voiced_line: voicing_map[kana] = [unichr(ord_kana+1), unichr(ord_kana+2)] else: voicing_map[kana] = [] return voicing_map to_voiced = _create_voicing_map() from_voiced = maps.invert_mapping(to_voiced) from_voiced = dict((k, v[0]) for (k, v) in from_voiced.iteritems()) def insert_duplicate_kanji(kanji_string): """ Inserts full kanji for characters where a shorthand is used. >>> k = insert_duplicate_kanji(unicode('私々', 'utf8')) >>> expected = unicode('私私', 'utf8') >>> k == expected True """ loc = kanji_string.find(u'々') while loc > 0: dup = kanji_string[loc-1]