您应该考虑使用 collections.Counter ,但是稍微修改您现有的代码:with io.open("fileo.txt", "r", encoding="utf-8") as filei: d = dict() for line in filei: words = line.strip().split() for word in words: if word in d: d[word] += 1 else: d[word] = 1 print d print [unicode(i) for i in d.items()]I am trying to check if a word exists in the dict. If does not that I will add the key and value to the dict:mydict = {}with io.open("fileo.txt", "r", encoding="utf-8") as fileo: for Word in filei: Word = Word.split() if not Word in dict: dict[Word] = 1 elif Word in dict: dict[Word] = dict[Word] + 1 print [unicode(i) for i in dict.items()]It throws below error:if not Word in dict:TypeError: unhashable type: 'list'If I remove the Word = Word.split() part it works, but entire line is considered. That will not help me. I want to count every word as you can see. 解决方案 Word = Word.split() will make Word a list, and you cannot have a list (or any other unhashable type) as a dictionary key.You should consider using collections.Counter, but to slightly modify your existing code:with io.open("fileo.txt", "r", encoding="utf-8") as filei: d = dict() for line in filei: words = line.strip().split() for word in words: if word in d: d[word] += 1 else: d[word] = 1 print d print [unicode(i) for i in d.items()] 这篇关于无法将值添加到python字典并写入文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持! 上岸,阿里云!
08-14 07:06