Программа выдает ошибку unhashable type: set. Сам код программы предусматривает распознавание типа данных и добавления их в словарь

class TypeStatistics:
    def __init__(self, arr):
        self.arr, self.sl = arr, {}
        
    def type_values(self):
        for i in self.arr:
            if i not in self.sl.keys():
                self.sl[str(i.__class__.__name__)] = []
                self.sl[str(i.__class__.__name__)].append(i)
            else:
                self.sl[str(i.__class__.__name__)].append(i)
        print(self.sl)
        
        


arr = ['Hello', 'world', 42, 351, 273.15, {1, 2, 3}, 911.0]
ts = TypeStatistics(arr)
ts.type_values()

Ответы (1 шт):

Автор решения: Danis

замените

if i not in self.sl.keys():

на

if str(i.__class__.__name__) not in self.sl.keys():

также можно ваш код немного уменьшить

class TypeStatistics:
    def __init__(self, arr):
        self.arr, self.sl = arr, {}
        
    def type_values(self):
        for i in self.arr:
            name = str(i.__class__.__name__)
            if name not in self.sl:
                self.sl[name] = []
            self.sl[name].append(i)
        print(self.sl)
        
        


arr = ['Hello', 'world', 42, 351, 273.15, {1, 2, 3}, 911.0]
ts = TypeStatistics(arr)
ts.type_values()
→ Ссылка