Python Set update() Method

set.update() adds multiple items from another iterable into an existing set.

Use it when you want to change a set in place with values from a list, tuple, set, string, or another iterable. It is different from set.add(), which adds only one item.

Quick answer #

numbers = {1, 2}
numbers.update([2, 3, 4])
print(numbers)
# {1, 2, 3, 4}

Use update() to add multiple items from a list, tuple, set, or other iterable into an existing set.

What set.update() does #

set.update():

  • Adds items from another iterable into the current set
  • Changes the original set in place
  • Ignores duplicate values automatically
  • Does not return a new set

This means the set itself is modified.

colors = {"red", "blue"}
colors.update(["blue", "green"])

print(colors)
# {'red', 'blue', 'green'}

Even though "blue" was added again, it appears only once because sets store unique values.

Basic syntax #

The basic syntax is:

my_set.update(iterable)

You can pass:

  • A list
  • A tuple
  • Another set
  • A string
  • Any other iterable

You can also pass multiple iterables at once:

my_set.update(a, b, c)

Example:

values = {1}
values.update([2, 3], (4, 5), {6})

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

If you are new to sets, see how to create a set in Python.

What it returns #

set.update() returns None.

This is a very common beginner mistake:

numbers = {1, 2}
result = numbers.update([3, 4])

print(result)
# None

The updated values are stored in the original set, not in result.

Correct usage:

numbers = {1, 2}
numbers.update([3, 4])

print(numbers)
# {1, 2, 3, 4}

Example: update with a list #

A list is one of the most common things to pass to update().

numbers = {1, 2}
numbers.update([2, 3, 4, 4])

print(numbers)
# {1, 2, 3, 4}

What happens here:

  • 2 is already in the set, so nothing changes for that value
  • 3 and 4 are added
  • The second 4 is ignored because sets do not keep duplicates

This is one reason sets are useful when you want unique values. For example, you can remove duplicates from a list in Python by converting the list to a set.

Example: update with another set #

You can use update() to combine values from one set into another.

set_a = {1, 2, 3}
set_b = {3, 4, 5}

set_a.update(set_b)

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

This is useful when you want to keep only unique values and modify the original set.

If you want a new combined set instead of changing the original, use set.union().

set_a = {1, 2, 3}
set_b = {3, 4, 5}

combined = set_a.union(set_b)

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

Example: update with a string #

A string is iterable, so update() adds each character separately.

letters = {"x"}
letters.update("cat")

print(letters)
# {'x', 'c', 'a', 't'}

This often surprises beginners.

update("cat") does not add "cat" as one item. It adds:

  • "c"
  • "a"
  • "t"

If you want to add one whole value, use set.add():

words = {"dog"}
words.add("cat")

print(words)
# {'dog', 'cat'}

update() vs add() #

The difference is simple:

  • add() adds one item
  • update() adds multiple items from an iterable

Example with add():

fruits = {"apple"}
fruits.add("banana")

print(fruits)
# {'apple', 'banana'}

Example with update():

fruits = {"apple"}
fruits.update(["banana", "orange"])

print(fruits)
# {'apple', 'banana', 'orange'}

Important warning with strings:

fruits = {"apple"}
fruits.update("kiwi")

print(fruits)
# Adds 'k', 'i', 'w', 'i' as characters

If you wanted "kiwi" as one item, use add() instead.

update() vs union() #

Both can combine values, but they work differently.

update() #

  • Changes the existing set
  • Returns None
a = {1, 2}
b = {2, 3}

a.update(b)
print(a)
# {1, 2, 3}

union() #

  • Returns a new set
  • Does not change the original set
a = {1, 2}
b = {2, 3}

c = a.union(b)
print(c)
# {1, 2, 3}
print(a)
# {1, 2}

Choose update() when you want to modify the original set in place. Choose union() when you want a new set.

Common errors and confusion #

Here are the most common problems beginners run into with set.update().

1. Saving the return value #

This is wrong if you expect a set back:

my_set = {1, 2}
result = my_set.update([3, 4])

print(result)
# None

Use the original set after calling update():

my_set = {1, 2}
my_set.update([3, 4])

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

2. Passing a non-iterable #

This causes an error:

my_set = {1, 2}
my_set.update(5)

You will get a TypeError because 5 is an integer, not an iterable.

Use an iterable instead:

my_set = {1, 2}
my_set.update([5])

print(my_set)
# {1, 2, 5}

If you see this problem, read how to fix TypeError: 'int' object is not iterable.

3. Expecting duplicates to stay #

Sets only keep unique values.

my_set = {1, 2}
my_set.update([2, 2, 2, 3])

print(my_set)
# {1, 2, 3}

4. Using update() when add() is better #

If you want to add one single value, especially a string, add() is usually the better choice.

my_set = {"dog"}
my_set.add("cat")

print(my_set)
# {'dog', 'cat'}

FAQ #

Does set.update() return a new set? #

No. It changes the existing set and returns None.

Can I use update() with a list? #

Yes. Any iterable like a list, tuple, set, or string can be used.

What is the difference between add() and update()? #

add() adds one item. update() adds multiple items from an iterable.

Why did my string get split into letters? #

Because strings are iterable, so update() adds each character separately.

How do I combine two sets without changing the original? #

Use union() instead of update().

See also #

Next, learn when to use set.add() for a single value and set.union() when you want a new combined set without changing the original.

Press Esc to close