重命名 Python 中的 defaultdict 键

Rename defaultdict key in Python

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

正在填充默认字典:

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) 因为它需要一个整数。我还能怎么做呢?我尝试了几种方法,但似乎没有任何效果。

如有任何帮助,我们将不胜感激!

解法:

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

你可以这样做:

word_count['ö'] = word_count[key]

然后:

del word_count[key]

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

TypeError: list indices must be integers, not str

并且 dict 希望它是关键。所以在这里你必须像 dict 那样转换输入或者使用它的索引从列表中弹出。