Records

5.3. Records#

A record is a data structure that allows you to store a fixed number of related pieces of information together as a single entity. Each piece of information in a record is called a field, and every field typically represents a specific attribute or property of the entity being described and fields do not have to have the same type (unlike arrays).

Think of a record like a form you might fill out at a doctor’s office. The form contains fields such as your name, age, phone number, and address. All these fields together describe one entity—you. Similarly, in programming, a record groups together related data into a structured format, making it easier to organise and work with.

5.3.1. Records in Python#

In Python, a simple and efficient way to represent records is by using tuples. We can create a tuple the same way we create a list but a tuple uses parentheses (). A tuple is an immutable sequence of elements (meaning that once the tuple is created it can’t be modified), and its fixed structure makes it a great choice for representing records with a defined set of fields. Each position in the tuple corresponds to a specific field.

For example, suppose you want to represent a student record with their name, age, and the subjects they are taking. You can use a tuple like this:

student = (
    "Alex",
    17,
    ["English", "Maths", "Software Engineering", "Drama", "Textiles"],
)

Here:

  • The first field 'Alex' represents the student’s name.

  • The second field 17 represents their age.

  • The third field ['English', 'Maths', 'Software Engineering', 'Drama', 'Textiles'] represents the subjects they are taking.

To get values out of a tuple in Python we can index them the same as we do lists:

student = (
    "Jordan",
    17,
    ["English", "Maths", "Software Engineering", "Drama", "Textiles"],
)

# Accesses name
print(student[0])

# Accesses age
print(student[1])

# Accesses subjects
print(student[2])

# Accesses first subject
print(student[2][0])
Question 1

How many elements can a record have?

  1. 1

  2. 2-10

  3. 10-100

  4. As many as you want

Solution

D.

Records can have any number of elements, but all records of the same type must have the same number of elements.

Question 2

Which of the following are a key feature of records?

  1. Curly brackets, i.e. {}

  2. Immutability

  3. Containing at least one string

  4. All records must be unique

Solution

Solution is locked

Question 3

How do you get the 14 out of this record:

record = (13, 14, 15, 16)
  1. record[-1]

  2. record[0]

  3. record[1]

  4. record[2]

Solution

Solution is locked

Code challenge: Catalogue A Library

Paige, a librarian, contacts you and asks you to write some code capable of cataloguing every book in their library. Paige asks that you store each book as a record since the details should never change and store the records as a list which may be updated as books are added or removed from the library.

Here is an example of a book

harry_potter = (9780747532699, "Harry Potter and the Philosopher's Stone", 'Fiction - Children')

Your task is to write one function which adds a record to the list and another which removes a record from the list, as specified below. These functions should be written in library.py.

Add_book specification (written in library.py)

  • name: add_book

  • parameters: books (list), ISBN (int), title (str), genre (str)

  • return: list of records with the new book added (list)

Remove_book specification (written in library.py)

  • name: remove_book

  • parameters: books (list), ISBN (int), title (str), genre (str)

  • return: list of books with the book matching the provided details removed (list)

Example (running from main.py)

import library

books = [(9780007348695, 'The Cat In The Hat', 'Fiction - Children'),
        (9780747532699, "Harry Potter and the Philosopher's Stone", 'Fiction - Children')]

books = library.add_book(books, 9780520201798, 'Frankenstein', 'Fiction - Horror')
books = library.remove_book(books, 9780007348695, 'The Cat In The Hat', 'Fiction - Children')
print(books)
[(9780747532699, "Harry Potter and the Philosopher's Stone", 'Fiction - Children'), (9780520201798, 'Frankenstein', 'Fiction - Horror')]

Hint

You can delete an element from a list using .remove(item). Here is an example

animals = ['lion', 'caterpillar', 'elephant', 'bee']
animals.remove('elephant')
print(animals)
['lion', 'caterpillar', 'bee']