我一直在寻找其他问题,但没有找到帮助。 我有密码:
def pairs(self, listOrString):
if listOrString:
return filter(re.compile(self.pairwise(self.text)).match, frozenset(self.text))
else:
return ' '.join(filter(re.compile(self.pairwise(self.text)).match, frozenset(self.text)))
def pairs_freqency(self):
return Counter(self.pairs(True))
def sum_pairs(self):
return len(self.ngrams(self.letters(list),2))
def pair_probability(self):
{pair : freqency / self.sum_pairs() for (pair, freqency) in self.pairs_freqency().iteritems()}
def pairwise(self, sequence):
x,y = tee(sequence)
next(y)
return zip(x,y)
但当我试图打印时:
print pairs_freqency()
我得到这个错误:
**更新
Traceback (most recent call last):
File "...", line 281, in <module>
print pairs(string, text)
File "...", line 46, in get_pairs
return filter(re.compile(self.pairwise(self.text)).match, frozenset(self.text))
File "...", line 190, in compile
return _compile(pattern, flags)
File "...", line 232, in _compile
p = _cache.get(cachekey)
TypeError: unhashable type: 'list'
有人能尽快帮我吗。
谢谢。
尝试将任何列表
lst
强制转换为frozenset(lst)
。TypeError: unhashable type: 'list' Error
发生在尝试使用list
作为dict
(或set
或frozenset
的成员)中的键时。解决此问题的标准方法是将list
转换为tuple
,例如:Counter
需要一个iterable作为其参数,每个iterable的项都是可哈希的(==可以是dict
的键)。您案例中的项是列表,它们不可散列(因为它们是可变的)。修正:改为使用元组,特别是在pairs
方法中——而不是使用
相关问题 更多 >
编程相关推荐