python空字典无法写入文本,无法将值添加到python字典并写入文件

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()]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值