【问题标题】:error : unhashable type = 'list'错误:不可散列的类型 = 'list'
【发布时间】:2017-12-27 17:13:54
【问题描述】:

我正在尝试从文件中收集错误,我需要对它们进行计数 这是我需要的输出:[error1:6,error2:3,error3:2]

import os,sys
import collections
Data = []
errors = []
with open('out.txt') as f:
        for line in f:
            Data.append([word for word in line.strip().split("\t")])
for item in Data:
    try:
        date,error = item[0],item[5]
        errors.append(error.split('\n'))
    except IndexError:
        print "A line in the file doesn't have enough entries."

counter = collections.Counter(errors)
print counter

【问题讨论】:

  • 我想你想要errors.extend(..) 而不是errors.append(..)

标签: python collections counter


【解决方案1】:

你写:

errors.append(error.split('\n'))

现在error.split('\n') will **return a list**. As a result,error` 不是字符串列表,而是字符串列表。您可能希望将其替换为:

errors <b>+=</b> error.split('\n')

现在errors 将是一个字符串列表,而字符串是可散列项。

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 2018-08-03
    • 2021-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    相关资源
    最近更新 更多