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.