簡體   English   中英

如何修復TypeError:無法散列的類型:“列表”錯誤

[英]How do I fix TypeError: unhashable type: 'list' Error

我一直在尋找其他問題,但沒有找到任何幫助。 我得到以下代碼:

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'

有人可以盡快幫助我。
謝謝。

TypeError: unhashable type: 'list' Error嘗試將list用作dict (或setfrozenset成員)的鍵時發生TypeError: unhashable type: 'list' Error 解決此問題的標准方法是將list tupletuple ,例如:

In [4]: my_dict = {[2,3,4] : 'a'}
---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-4-cda6d34218c4> in <module>()
----> 1 my_dict = {[2,3,4] : 'a'}

TypeError: unhashable type: 'list'

In [5]: my_dict = {tuple([2,3,4]) : 'a'}
In [6]: my_dict
Out[6]: {(2, 3, 4): 'a'}

Counter需要一個可迭代的項作為其參數,每個項都是可哈希的 (==可以是dict的鍵)。 您遇到的項目是list ,不能進行哈希處理(因為它們是可變的)。 修正:改為使用元組,特別是在您的pairs方法中-

    return filter(re.compile(self.pairwise(self.text)).match, list(self.text))

采用

    return filter(re.compile(self.pairwise(self.text)).match, tuple(self.text))

嘗試將任何列表lst強制轉換為frozenset(lst)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM