Не выводит информацию по неприемлемым агрументам при добавлении в словарь
Необходимо написать функцию create_dictionary, которая принимает столько аргументов, сколько необходимо и создает словарь, в котором ключами будут эти аргументы (каждый аргумент это разный ключ), предоставляемые функции и значение это позиции этих аргументов.
Не все предоставляемые аргументы будут восприимчивы к созданию словаря. Выведи f"Cannot add {argument} to the dict!" для каждого неприемлемого аргумента.
Также согласовано, что аргументы, предоставленные для функции create_dictionary будут только следующих типов: int, float, str, bool, NoneType, list, tuple, set, dict, function.
Также в этой задаче неельзя использовать функции hash или конструкции try/except.
Подсказка: используйте isinstance, также вы можете использовать callable(object) для того, чтобы проверить, object это функция или нет.
Написал функцию:
def create_dictionary(*args) -> dict:
new_dict = {}
s = ""
for i in range(len(args)):
if isinstance(i, int or float or str or bool or tuple):
new_dict[args[i]] = i
if isinstance(i, list or set or dict):
s += f"Cannot add {i} to the dict!"
return new_dict
return s
Пример использования:
create_dictionary(7, 1, 3) # returns {7: 0, 1: 1, 3: 2}
create_dictionary(3, [1, 2], 5) # prints "Cannot add [1, 2] to the dict!" and returns {3: 0, 5: 2}
create_dictionary(3, (1, 2), 5) # returns {3: 0, (1, 2): 1, 5: 2}
Но при проверке на тестах, выводит по некоторым тестам ошибки:
args = (3, [1, 2], 5), expected_std_output = 'Cannot add [1, 2] to the dict!\n'
expected_result = {3: 0, 5: 2}
TypeError: unhashable type: 'list'
args = (3, {1, 2}, 5), expected_std_output = 'Cannot add {1, 2} to the dict!\n'
expected_result = {3: 0, 5: 2}
TypeError: unhashable type: 'set'
args = (3, {1: 1, 2: 2}, False)
expected_std_output = 'Cannot add {1: 1, 2: 2} to the dict!\n'
expected_result = {False: 2, 3: 0}
TypeError: unhashable type: 'dict'