How to Access Elements From a List of Tuples in Python?

Problem Formulation and Solution Overview

This article will show you how to access and retrieve tuple Elements from a List of Tuples in Python.

πŸ’‘ Definition: Python Tuples are a type of Data Structure similar to Lists. However, Tuples are enclosed in round brackets () and are immutable, whereas Lists are enclosed in square brackets [] and are mutable. Another point worth mentioning is that Tuples tend to be more memory-efficient than Lists.

To make it more fun, we have the following running scenario:

Your boss has given you a List of Tuples containing the first 10 rows of NCIC Codes from the National Crime Information Center. Your task is to provide various ways to access and retrieve these Tuples.

Sample Data:

ncic_codes = [(101, 'Treason'), (102, 'Treason Misprision'),
                        (103, 'Espionage'), (104, 'Sabotage'),
                        (105, 'Sedition'), (106, 'Selective Service'),
                        (199, 'Sovereignty-Remarks'), (201, 'Military Desertion'),
                        (299, 'Military-Remarks'), (301, 'Illegal Entry')]

πŸ’¬ Question: How would we write code to access these Tuple Elements?

We can accomplish this task by one of the following options:


Method 1: Use index to access Specific Tuple Element

This method uses the Tuple index to access and display specific Tuple elements from a List of Tuples.

code_103 = ncic_codes[2][1]
print(code_103)

To access a specific Tuple element, reference the Tuple with the index value. In this example, the highlighted line retrieves the Offense Description for the matching Offense Code 103.

This is achieved by first referencing the specific Tuple element containing the desired information (ncic_codes[2]). If output to the terminal, the following Tuple displays.

(103, ‘Espionage’)

However, we need to append [1] (ncic_codes[2][1]) to retrieve the Offence Description. The results save to code_103 and output to the terminal.

Espionage

Method 2: Use List Comprehension to Access all Tuple Elements

This method uses List Comprehension to access and display all Tuple elements from a List of Tuples.

all_tuples = [x for x in ncic_codes]
print(all_tuples)

Above uses List Comprehension to loop through each Tuple of ncic_codes and saves them to all_tuples. The contents of all_tuples is output to the terminal.

[(101, 'Treason'), (102, 'Treason Misprision'), (103, 'Espionage'), (104, 'Sabotage'), (105, 'Sedition'), (106, 'Selective Service'), (199, 'Sovereignty-Remarks'), (201, 'Military Desertion'), (299, 'Military-Remarks'), (301, 'Illegal Entry')]

Method 3: Use List Comprehension to Search a List of Tuples

This method uses List Comprehension to search and return Tuples from a List of Tuples matching the stated criteria.

search_res = [x[0] for x in ncic_codes if x[0] >= 200]
print(search_res)

Above uses List Comprehension to search for and return Tuples from a List of Tuples where the Offense Code is greater than or equal to (>=) 200. The results save to search_res and are output to the terminal.

[201, 299, 301]


Method 4: Use Unpacking

This method uses unpacking to extract all the data from a Tuple.

n_codes = (101, 102, 103, 104, 105)
code_101, *_ = n_codes
print(n_codes)

Above declares a Tuple containing the first five (5) Offense Codes from the National Crime Information Center and saves them to n_codes.

The following line references the first Tuple element, code_101. Then, *_ is called. This is the unpacking symbol and indicates to Python to retrieve (unpack) the remainder of the Tuple elements. These results are then output to the terminal.

(101, 102, 103, 104, 105)

Method 5: Use Slicing

This method uses slicing to retrieve specific Tuples from a List of Tuples.

sliced = ncic_codes[3:6]
print(sliced)

Above uses slicing to retrieve three (3) Tuples from ncic_codes starting at position 3, and a stop position of 6 (6-1), equating to ncic_codes[3:6].

The results save to sliced and are output to the terminal as a sliced List of Tuples.

[(104, 'Sabotage'), (105, 'Sedition'), (106, 'Selective Service')]

The Tuples below in bold indicate the extracted data using the above slicing range.

[(101, 'Treason'), (102, 'Treason Misprision'), (103, 'Espionage'), (104, 'Sabotage'), (105, 'Sedition'), (106, 'Selective Service'), (199, 'Sovereignty-Remarks'), (201, 'Military Desertion'), (299, 'Military-Remarks'), (301, 'Illegal Entry')]

Method 6: Use filter and a Lambda

This method uses filter() and passes a lambda as an argument to search for and return Tuples from a List of Tuples matching the stated criteria.

ncic_filter = list(filter(lambda x: x[0] == 199, ncic_codes))
print(ncic_filter)

Above calls the filter() method and passes a lambda as an argument. This loops through ncic_codes and returns Tuples where the first element of the Tuple (the Offense Code) equals 199. The results are converted to a List format, saved to ncic_filter and output to the terminal.

[(199, 'Sovereignty-Remarks')]

Summary

These six (6) methods of accessing elements from a List of Tuples should give you enough information to select the best one for your coding requirements.

Good Luck & Happy Coding!


Programmer Humor – Blockchain

“Blockchains are like grappling hooks, in that it’s extremely cool when you encounter a problem for which they’re the right solution, but it happens way too rarely in real life.” source xkcd