无法将值添加到python字典并写入文件 [英] Unable to add Value to python dictionary and write to a file

查看:182
本文介绍了无法将值添加到python字典并写入文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试检查dict中是否存在单词.如果不是这样,我将keyvalue添加到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()] 

它抛出以下错误:

if not Word in dict:
TypeError: unhashable type: 'list'

如果我删除了Word = Word.split()部分,则可以使用,但是会考虑整行.那对我没有帮助.如您所见,我想计算每个单词.

解决方案

Word = Word.split()将使Word成为列表,并且您不能将list(或任何其他不可散列的类型)用作字典键.

您应该考虑使用 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字典并写入文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆