Python Set

Python set is immutable.

Python set is unordered values with no duplicates.


empty_set = set() # {} - will not work, because it is a dict



pets = {'dog', 'cat', 'parrot', 'parrot'}

pets_2 = {'dog', 'cat', 'lizzard', 'fish'}



print(pets) # {'parrot', 'cat', 'dog'} (random order, no duplicates)



print(len(pets)) # 3 (no duplicates)



print('Check if element is in the set:')

print('cat' in pets) # True

print('horse' not in pets) # True



print('Add element to the set:')

pets.add('hamster')

print(pets) # {'cat', 'hamster', 'parrot', 'dog'}



print('Get intersection between two sets:')

print(pets.intersection(pets_2)) # {'dog', 'cat'}



print('Get two sets combined (no duplicates):')

print(pets.union(pets_2)) # {'parrot', 'dog', 'hamster', 'cat', 'fish', 'lizzard'}



print('Loop thru items in the set:')

for pet in pets:

    print('Pet item:', pet)



print('Loop thru items in the set with getting element index:')

for pet_index, pet_name in enumerate(pets): # enumerate(pets, start=1) to start from 1

    print('Pet index:', pet_index, ' pet name:', pet_name)



print('Join set items into a string:')

pets_str = '; '.join(pets)

print(pets_str) # dog; cat; parrot



print('Split string into set:')

pets_set = set(pets_str.split('; '))

print(pets_set) # {'cat', 'parrot', 'dog'}

Set operations:


# Sets store ... well sets

empty_set = set()

# Initialize a set with a bunch of values. Yeah, it looks a bit like a dict. Sorry.

some_set = {1, 1, 2, 2, 3, 4}  # some_set is now {1, 2, 3, 4}



# Similar to keys of a dictionary, elements of a set have to be immutable.

invalid_set = {[1], 1}  # => Raises a TypeError: unhashable type: 'list'

valid_set = {(1,), 1}



# Can set new variables to a set

filled_set = some_set



# Add one more item to the set

filled_set.add(5)  # filled_set is now {1, 2, 3, 4, 5}



# Do set intersection with &

other_set = {3, 4, 5, 6}

filled_set & other_set  # => {3, 4, 5}



# Do set union with |

filled_set | other_set  # => {1, 2, 3, 4, 5, 6}



# Do set difference with -

{1, 2, 3, 4} - {2, 3, 5}  # => {1, 4}



# Do set symmetric difference with ^

{1, 2, 3, 4} ^ {2, 3, 5}  # => {1, 4, 5}



# Check if set on the left is a superset of set on the right

{1, 2} >= {1, 2, 3} # => False



# Check if set on the left is a subset of set on the right

{1, 2} <= {1, 2, 3} # => True



# Check for existence in a set with in

2 in filled_set   # => True

10 in filled_set  # => False

Set comprehension


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

my_set = set()

for n in nums:

    my_set.add(n)



print(my_set) # {1, 2, 3, 4, 5} (unique values)



# copy set using set comprehension

my_set2 = {n for n in nums}

print(my_set2) # {1, 2, 3, 4, 5}



# copy set using set comprehension with if condition

my_set3 = {n for n in nums if n%2==0}

print(my_set3) # {2, 4}

Leave a Comment