Иногда мы просто хотим работать с уникальными элементами, и любой тип повторения нежелателен, для этих случаев нам нужны методы для решения этих проблем. Одной из таких проблем может быть проверка на наличие уникальных ключей и значений. Для ключей они по умолчанию уникальны, поэтому внешнее тестирование не требуется, но что касается значений, то нам нужны способы сделать это. Давайте проверим различные способы, которыми это можно сделать.
Метод № 1 : Используя циклы
В Наивном методе для выполнения этой конкретной задачи, мы можем проверить каждое значение и вставить каждое значение в список/хэш в словаре, и когда произойдет повторение, просто остановите поток и верните false.
# Python3 code to demonstrate
# check for unique values
# Using loops
# initializing dictionary
test_dict = {'Manjeet' : 1, 'Akash' : 2, 'Akshat' : 3, 'Nikhil' : 1}
# printing original dictionary
print("The original dictionary : " + str(test_dict))
# using loops
# check for unique values
flag = False
hash_val = dict()
for keys in test_dict:
if test_dict[keys] in hash_val:
flag = True
break
else :
hash_val[test_dict[keys]] = 1
# print result
print("Does dictionary contain repetition : " + str(flag))
Выход:
Оригинальный словарь : {'Nikhil': 1, 'Akash': 2, 'Akshat': 3, 'Manjeet': 1}
Содержит ли словарь повторение : True
Метод № 2 : Использование len() + set() + values()
этой проблемы может быть легко решена с помощью комбинации вышеперечисленных трех функций. Функция set может использоваться для преобразования значений в set, удаления дубликатов, а функция values может использоваться для доступа к значениям.
# Python3 code to demonstrate
# check for unique values
# Using len() + set() + values()
# initializing dictionary
test_dict = {'Manjeet' : 1, 'Akash' : 2, 'Akshat' : 3, 'Nikhil' : 1}
# printing original dictionary
print("The original dictionary : " + str(test_dict))
# using len() + set() + values()
# check for unique values
flag = len(test_dict) != len(set(test_dict.values()))
# print result
print("Does dictionary contain repetition : " + str(flag))
Выход:
Оригинальный словарь : {'Nikhil': 1, 'Akash': 2, 'Akshat': 3, 'Manjeet': 1}
Содержит ли словарь повторение : True