-2

我有以下问题:我有一个名为 word_count 的默认字典,其中包含单词和它们出现的频率。我通过计算 Google Speech API 的回复得到这个。但是,这个 API 为我返回了诸如德语字母 'ö' 的 '\303\266' 之类的东西。现在我想通过这个字典,测试上面显示的这些东西之一是否存在,并用正确的东西替换它,如下所示:

填充默认字典:

word_count = defaultdict(int)
for line in fileinput.input([file]):
    line = line.strip()
    words = line.split()
    for word in words:
        word_count[word] += 1

到目前为止它工作正常,我可以打印字典,它可以让我得到带有数字的单词。

现在更换钥匙:

for key,val in word_count:
    if '\\303\\266' in key:
        new = key.replace('\\303\\266', 'ö')
        word_count[new] = word_count.pop(key)

现在这不起作用,我猜是因为我不能 pop(key) 因为它需要一个整数。我该怎么做?我尝试了几种方法,但这里似乎没有任何效果。

任何帮助将不胜感激!

解决方案:

原来这是我的错,因为我对字典进行了排序,从而将其转换为元组列表。感谢所有帮助我解决这个问题的人!

4

2 回答 2

1

从讨论中了解到您正在使用 tuple 列表而不是dict. 所以list.pop总是期待一个整数,这就是你得到错误的原因。

TypeError: list indices must be integers, not str

dict期待它是关键。所以在这里你必须dict使用它的索引来转换输入或从列表中弹出。

于 2016-08-30T07:03:48.583 回答
0

你可以这样做:

word_count['ö'] = word_count[key]

接着:

del word_count[key]
于 2016-08-30T06:47:07.420 回答