重命名 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
那样转换输入或者使用它的索引从列表中弹出。
我有以下问题:我有一个名为 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
那样转换输入或者使用它的索引从列表中弹出。