Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Unhasshable type 'list'
#1
Hi, so I'm getting this error
Error:
if kata in set(KATA_GANTI_1) | set(KATA_GANTI_2) | set(KATA_GANTI_3) | set(SUBJEK): TypeError: unhashable type: 'list'
I don't know what is wrong with my code. It suppose to print the Subject of the sentence that I input


#deklarasi kelas kata
KATA_GANTI_1    = ['saya','Saya', 'mereka', 'kami',  'kita', 'aku', 'beta', 'daku', 'engkau']
KATA_GANTI_2    = ['anda' , 'kamu', 'engkau', 'kau', 'dikau', 'mu' , 'kalian' , 'kamu sekalian' , 'sekalian' ]
KATA_GANTI_3    = ['mereka','nya','ia','beliau','dia','bapak', 'ayah', 'ibu', 'mama' 'kakak', 'kakek', 'adik', 'nenek', 'abang', 'tante', 'bibi', 'paman']
SUBJEK          = [KATA_GANTI_1 , KATA_GANTI_2, KATA_GANTI_3]
PREDIKAT        = ['mengatakan' , 'berkata' , 'bertanya' , 'menanyakan' , 'memerintah' , 'memerintahkan' , 'menyuruh' , 'memberitahu']
KATA_HUBUNG_BERITA          = ['bahwa' , 'supaya']
KATA_HUBUNG_TANYA_TOTAL     = ['apakah' , 'kah']
KATA_HUBUNG_TANYA_PARSIAL   = ['tentang',]
KET_SIFAT   = ['sangat', 'lebih', 'kurang', 'cukup' ,'paling' , 'agak']
KATA_SIFAT  = ['cantik' 'jelek' , 'tinggi' , 'pendek' , 'kesal' , 'rapi' , 'banyak' , 'berat' , 'hebat' ]
KET_WAKTU   = ['kemarin', 'besok', 'sekarang', 'kini', 'lusa', 'siang', 'malam', 'pagi', 'sebelum', 'sesudah', 'baru saja' , 'barusan','saat', 'sesaat', 'sewaktu', 'seketika', 'yang lalu' , 'tadi']
#==========================================================================================================#
 
#token
from nltk.tokenize import word_tokenize
nama = input ("Masukkan Kalimat : ")
kalimat = nama.lower().split()
kalpeng = (nama[nama.find('.') + 1:nama.find('“')])
kalsung = (nama[nama.find('“') + 1:nama.find('”')])
for index, kata in enumerate (kalimat):
    if kata in set(KATA_GANTI_1) | set(KATA_GANTI_2) | set(KATA_GANTI_3) | set(SUBJEK):
        x = "Subjek"
        print (kata + "adalah ", x)
    else :
        print ("Tidak ada Subjek")
Reply
#2
SUBJEK is list of lists, so it's not hashable. That is exactly what the error says...

>>> my_list = [[1,2], [3,4]]
>>> set(my_list)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
I don't see the point of adding set(SUBJEK). i.e. kata is str, elements in SUBJEK are of type list
If you can't explain it to a six year old, you don't understand it yourself, Albert Einstein
How to Ask Questions The Smart Way: link and another link
Create MCV example
Debug small programs

Reply
#3
And instead of converting to a set on each pass through the for, convert once before the for and check that
KATA_GANTI_1    = ['saya','Saya', 'mereka', 'kami',  'kita', 'aku', 'beta', 'daku', 'engkau']
KATA_GANTI_2    = ['anda' , 'kamu', 'engkau', 'kau', 'dikau', 'mu' , 'kalian' , 'kamu sekalian'
KATA_GANTI_3    = ['mereka','nya','ia','beliau','dia','bapak', 'ayah', 'ibu', 'mama' 'kakak', '

## can also be done on one line
all_as_set=KATA_GANTI_1 + KATA_GANTI_2 + KATA_GANTI_3
all_as_set=set(all_as_set) 
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  search a list or tuple for a specific type ot class Skaperen 8 1,853 Jul-22-2022, 10:29 PM
Last Post: Skaperen
  TypeError: unsupported opperand type(s) for %: 'int' and 'list' cool_person 7 2,096 May-07-2022, 08:40 AM
Last Post: ibreeden
  unsupported operand type(s) for %: 'list' and 'int' RandomCoder 4 32,705 May-07-2022, 08:07 AM
Last Post: menator01
  You have any idea, how fix TypeError: unhashable type: 'list' lsepolis123 2 2,966 Jun-02-2021, 07:55 AM
Last Post: supuflounder
  What type of *data* is the name of a list/tuple/dict, etc? alloydog 9 4,255 Jan-30-2021, 07:11 AM
Last Post: alloydog
Question dict value, how to change type from int to list? swissjoker 3 2,692 Dec-09-2020, 09:50 AM
Last Post: perfringo
  List items verification for Integer type vintysaw 4 2,823 Jan-17-2020, 01:56 PM
Last Post: perfringo
  Type hinting - return type based on parameter micseydel 2 2,425 Jan-14-2020, 01:20 AM
Last Post: micseydel
  removing quotes from a list and keep type list evilcode1 3 2,264 Aug-03-2019, 11:07 AM
Last Post: perfringo
  please help me TypeError: unsupported operand type(s) for +=: 'int' and 'list' aankrose 2 7,156 Mar-26-2019, 06:00 PM
Last Post: perfringo

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020