簡體   English   中英

Python TypeError:無法散列的類型:'list'

[英]Python TypeError: unhashable type: 'list'

我正在嘗試運行有效執行以下操作的程序:

if [4, 5, False, False, False, False] in {}

而且,在這一行上,我收到一個TypeError: unhashable type 'list'

我究竟做錯了什么?

if foo in {}的代碼if foo in {}檢查字典的任何鍵是否等於foo

在您的示例中, foo是一個列表。 列表是不可散列的類型,不能作為字典的鍵。

如果要檢查字典的鍵或集合中是否包含列表的任何條目,可以嘗試:

if any([x in {} for x in (4, 5, False)])

如果要檢查任何值是否等於列表,可以嘗試:

if any([v == [4, 5, False, False, False, False] for v in your_dict.values()])

set包含可哈希對象,這意味着它們是可排序的,並且啟用了有效的搜索/插入方法。 另一方面, list不可散列。 這就是為什么您的代碼會出錯。 我建議使用tuple而不是list

if (4, 5, False, False, False, False) in {}:
  ...

你可以做類似的事情

if all(x in {} for x in [4, 5, False, False, False, False]):
    ....

要么

if any(x in {} for x in [4, 5, False, False, False, False]):
    ....

取決於你想要什么

暫無
暫無

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

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