字典中的三字母频率

时间:2016-04-29 04:32:33

标签: python list dictionary tuples

我有两个清单:

    list1 = ["T" "UH", "T"]
    list2 = ["t", "oo", "t"]

第一个列表是音素,第二个列表是字形,每个字母彼此对应。我希望能够创建一个元组(音素,字形)作为默认字典的2元组键,并将字形序列设置为整数。

我希望它打印出来像这样:

    defaultdict(, {('T', 'oo'): {'t': 1}, ('UH', 't'): {'oo': 1}, ('T', '^'): {'t': 1}}))

“^”值表示这是第一个启动单词的字素。

到目前为止,我有这个:

    from collections import defaultdict

    d = defaultdict(dict)

    list1 = ["T" "UH", "T"]
    list2 = ["t", "oo", "t"]

    for char in list1:
       d[char] += 1

2 个答案:

答案 0 :(得分:2)

下面的代码可以解决问题。

"Di, "

我重命名变量以区分列表并创建第三个偏移列表以保持for循环简单。

答案 1 :(得分:1)

希望以下代码能够帮助您找到所需的解决方案:

from collections import defaultdict

d = defaultdict(dict)

phonemes = ["T", "UH", "T"]
graphemes = ["t", "oo", "t"]

for char in range(len(phonemes)):
    if (char != (len(phonemes) - 1)):
        d[(phonemes[char],graphemes[char + 1])]
    else:
        d[(phonemes[char],'^')]

for currentPhenome in d:
    d[currentPhenome] = {graphemes[phonemes.index(currentPhenome[0])]:1}

print(d)

输出是:

defaultdict(<class 'dict'>, {('T', '^'): {'t': 1}, ('T', 'oo'): {'t': 1}, ('UH', 't'): {'oo': 1}})