Решение 1. Уникальные длины
words = ["apple", "banana", "cherry", "apple"]
unique_lengths = {len(word) for word in words}
print(unique_lengths)Множество оставляет только 5 и 6.
Решение 2. frozenset и union
immutable_set = frozenset([1, 2, 3])
new_set = immutable_set.union({4, 5})
print(new_set)union() возвращает новый frozenset, исходный объект не меняется.
Решение 3. Проверка типов ключей
candidates = [1, True, {1, 2}, 1.5, {"a": 1}, (1, 2), [1, 2], frozenset([1, 2])]
for value in candidates:
try:
test = {value: "ok"}
print(type(value).__name__, "можно")
except TypeError:
print(type(value).__name__, "нельзя")Нехешируемые изменяемые объекты нельзя использовать как ключи.
Решение 4. Инверсия
original_dict = {"a": 1, "b": 2, "c": 3}
inverted_dict = {}
for key, value in original_dict.items():
inverted_dict[value] = key
print("Инверсированный словарь:", inverted_dict)items() сразу даёт ключ и значение, поэтому код короче.
Решение 5. Неуникальные числа
numbers = [4, 7, 3, 7, 8, 3, 4, 2, 7, 3, 8, 4]
duplicates = []
for number in sorted(set(numbers), reverse=True):
if numbers.count(number) > 1:
duplicates.append(number)
print("Числа, встречающиеся более одного раза:", duplicates)set(numbers) оставляет кандидатов, count() проверяет повтор.
Решение 6. Подмножество словаря
dict1 = {"a": 1, "b": 2}
dict2 = {"a": 1, "b": 2, "c": 3}
is_subset = True
for key, value in dict1.items():
if key not in dict2 or dict2[key] != value:
is_subset = False
break
if is_subset:
print("Первый словарь является подмножеством второго.")Проверяются и ключи, и соответствующие значения.