# Python sum second element in list of tuples

I have structure like this:

``````structure = [('a', 1), ('b', 3), ('c', 2)]
``````

I would like to sum the integers (`1+3+2`) using `sum()` builtin method (in one line).

Any ideas?

asked Aug 31, 2012 at 15:10

``````sum(n for _, n in structure)
``````

would work.

answered Aug 31, 2012 at 15:11

David RobinsonDavid Robinson

13

``````sum(x[1] for x in structure)
``````

should work

answered Aug 31, 2012 at 15:11

mgilsonmgilson

You could do

``````sum(zip(*structure)[1])
``````

nbro

answered Aug 31, 2012 at 15:13

EricEric

2

Using a functional style, you could do

``````reduce(lambda x,y:x+y[1], structure,0)
``````

nbro

answered Aug 31, 2012 at 15:26

John WangJohn Wang

1

## Sum the second element of each tuple in a list in Python #

Use a generator expression to sum the second element of each tuple in a list, e.g. `result = sum(tup[1] for tup in list_of_tuples)`. The `sum()` function gets passed a generator object with the second element of each tuple in the list and returns the total.

```Copied!```list_of_tuples = [(10, 20), (30, 40), (50, 60)]

result = sum(tup[1] for tup in list_of_tuples)

print(result)  # 👉️ 120
``````

The first step is to use a generator expression to iterate over the list of tuples.

Generator expressions are used to perform some operation for every element or select a subset of elements that meet a condition.

On each iteration, we access the tuple element at index `1` (the second tuple item) and return the result.

The example passes a generator object that contains the numbers `20`, `40`, `60` to the `sum()` function, which then returns `120`.

You can use this approach to sum the Nth element of each tuple in a list.

Here is an example that sums the first element of each tuple in a list.

```Copied!```list_of_tuples = [(10, 20), (30, 40), (50, 60)]

result = sum(tup[0] for tup in list_of_tuples)

print(result)  # 👉️ 90
``````

Python indexes are zero-based. The first item in a tuple (or any other iterable) has an index of `0`, the second an index of `1`, etc.

An alternative approach is to unpack the second item from each tuple in the generator expression.

```Copied!```list_of_tuples = [(10, 20), (30, 40), (50, 60)]

result = sum(second for _, second in list_of_tuples)

print(result)  # 👉️ 120
``````

We only assigned the second item in the tuples to a variable.

The first item is stored in an underscore because it's not needed.

We basically unpack the second item from the tuple of the current iteration and assign the value to a variable.

```Copied!```first, second = (10, 20)

print(first)  # 👉️ 10
print(second)  # 👉️ 20
``````

When using this approach, you have to make sure to declare exactly as many variables as you have items in the tuple.

Which approach you pick is a matter of personal preference. I'd use directly index access as if I find it easier to read and more explicit.

### How do you sum two tuples in Python?

To add two tuples element-wise: Use the zip function to get an iterable of tuples with the corresponding items. Use a list comprehension to iterate over the iterable. On each iteration, pass the tuple to the sum() function.

### How do you find the sum of the tuples in a list?

To find a sum of the tuple in Python, use the sum() method. Define a tuple with number values and pass the tuple as a parameter to the sum() function; in return, you will get the sum of tuple items.

### Can you sum tuples in Python?

The built-in sum() function in Python is used to return the sum of an iterable. To get the sum total of a tuple of numbers, you can pass the tuple as an argument to the sum() function.

### How do you sum items in a list in Python?

Python provides an inbuilt function sum() which sums up the numbers in the list. Syntax: sum(iterable, start) iterable : iterable can be anything list , tuples or dictionaries , but most importantly it should be numbers. start : this start is added to the sum of numbers in the iterable.

Tải thêm tài liệu liên quan đến bài viết Python sum second element in list of tuples