![](/img/trans.png)
[英]Python3: TypeError: unhashable type: 'list' when using Counter
[英]Problems with unhashable list in Python3
2 天前,我開始編寫一個字符串到十六進制的轉換器。 現在我有了那個代碼
HEXV = {"A":"41","a":"","B":"42","b":"","C":"43","c":"","D":"44","d":"","E":"45","e":"","F":"46","f":"","G":"47","g":"","H":"48","h":"","I":"49","i":"","J":"","j":"","K":"","k":"","L":"","l":"","M":"","m":"","N":"","n":"","O":"","o":"","P":"","p":"","Q":"","q":"","R":"","r":"","S":"","s":"","T":"","t":"","U":"","u":"","V":"","v":"","W":"","w":"","X":"","x":"","Y":"","y":"","Z":"","z":""}
CHAR = []
def loop():
n = 0
if CHAR[n] in HEXV:
print(HEXV.get(CHAR[n]))
n += 1
i = input(str('Insert Phrase:'))
l = list(i)
CHAR.append(l)
loop()
那個錯誤
C:\Users\Pc\AppData\Local\Programs\Python\Python39>C:/Users/Pc/AppData/Local/Programs/Python/Python39/python.exe "c:/Users/Pc/AppData/Local/Programs/Python/Python39/codes/HEXCODE Converter.py"
Insert Phrase:A
Traceback (most recent call last):
File "c:\Users\Pc\AppData\Local\Programs\Python\Python39\codes\HEXCODE Converter.py", line 16, in <module>
loop()
File "c:\Users\Pc\AppData\Local\Programs\Python\Python39\codes\HEXCODE Converter.py", line 7, in loop
if CHAR[n] in HEXV:
TypeError: unhashable type: 'list'
無論我如何更改它都無法解決的代碼。 我已經瀏覽過了,但我無法解決它,如果你能幫助我,我將不勝感激
input
返回一個字符串
> i = input('Insert Phrase:')
> Insert Phrase:A
> i
'A'
你列了一個清單
> l = list(i)
> l
['A']
然后將其附加到列表CHAR
> CHAR = []
> CHAR.append(l)
> CHAR
[['A']]
因此,在您的 function loop
(順便說一句,實際上並沒有循環)中,您訪問了第 n 個值,該值始終為 0,因為您沒有循環:
> n = 0
> CHAR[n]
['A']
而且列表不可散列,所以
> CHAR[n] in HEXV
# which is actually this
> ['A'] in HEXV
給你錯誤。
你可以做的是使用CHAR.extend(l)
而不是CHAR.append(l)
或者只是將實際列表傳遞給循環。 但是您通常需要重新評估您的代碼,因為我不相信這會做您實際想要做的事情。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.