Skip to content

How to Check If a List Contains Only Unique Elements in Python

Learn how to efficiently verify list uniqueness in Python by comparing list and set lengths, handling hashable elements like integers and strings.

In data validation and processing, ensuring that a collection contains no duplicate values is a frequent requirement. For example, a list of User IDs or email addresses must typically remain unique.

Python provides a highly efficient way to check for uniqueness using the built-in set data structure. Since sets, by definition, cannot hold duplicate items, converting a list to a set is the standard approach to identify or remove duplicates.

This guide explains how to use sets to validate list uniqueness and calculate the number of duplicates.

Understanding Python Sets

A Set in Python is an unordered collection of unique elements. If you attempt to create a set from a list that contains duplicates, Python automatically discards the recurring values.

Converting a List to a Set

This behavior allows us to quickly "clean" a list.

my_list = [1, 2, 2, 3, 4, 4, 5]

my_set = set(my_list)

print(f"Original List: {my_list}")
print(f"Set Content:   {my_set}")

Output:

Original List: [1, 2, 2, 3, 4, 4, 5]
Set Content:   {1, 2, 3, 4, 5}

Method: Comparing List and Set Lengths

To check if a list contains only unique elements, you do not need to iterate through it manually. Instead, simply compare the length of the original list with the length of the set created from it.

  • If len(list) == len(set), no items were removed -> All elements are unique.
  • If len(list) > len(set), items were removed -> Duplicates exist.
def is_list_unique(data):
    return len(data) == len(set(data))

unique_data = [1, 2, 3, 4, 5]
if is_list_unique(unique_data):
    print(f"'{unique_data}' contains only unique elements.")
else:
    print(f"'{unique_data}' contains duplicates.")

duplicate_data = [1, 2, 2, 3]
if is_list_unique(duplicate_data):
    print(f"'{duplicate_data}' contains only unique elements.")
else:
    print(f"'{duplicate_data}' contains duplicates.")

Output:

'[1, 2, 3, 4, 5]' contains only unique elements.
'[1, 2, 2, 3]' contains duplicates.

Calculating the Number of Duplicates

Using the same logic, you can mathematically determine exactly how many extra (duplicate) entries exist in your list.

my_list = [10, 20, 20, 30, 40, 40, 40]

total_items = len(my_list)
unique_items = len(set(my_list))

duplicate_count = total_items - unique_items

print(f"Total items: {total_items}")
print(f"Unique items: {unique_items}")
print(f"Number of duplicates: {duplicate_count}")

Output:

Total items: 7
Unique items: 4
Number of duplicates: 3

Conclusion

The most Pythonic way to verify uniqueness in a list is:

  1. Convert the list to a set: set(my_list).
  2. Compare the lengths: len(my_list) == len(set(my_list)).

This approach is concise, efficient, and leverages Python's optimized set operations.

Navigation