List vs. tuple vs. set vs. dictionary in Python

Python collections are used to store data, for example, lists, dictionaries, sets, and tuples, all of which are built-in collections. Let’s understand and discuss the differences between these built-in collections.

  • List: A list is a collection of ordered data. The lists are declared with square brackets.
  • Tuples: A tuple is an ordered collection of data. Tuples are enclosed within parentheses.
  • Sets: A set is an unordered collection. Sets are represented in curly brackets.
  • Dictionaries: A dictionary is an unordered collection of data that stores data in key-value pairs. Dictionaries are enclosed in curly brackets in the form of key-value pairs.

Code example

Let’s first see the difference in terms of how we create them.

# Various ways to create a list
print("List Examples")
list1=[1,4,"Gitam",6,"college"]
list2=[] # creates an empty list
list3=list((1,2,3))
print(list1)
print(list2)
print(list3)
# Various ways to create a tuple
print("Tuple Examples")
tuple1=(1,2,"college",9)
tuple2=() # creates an empty tuple
tuple3=tuple((1,3,5,9,"hello"))
print(tuple1)
print(tuple2)
print(tuple3)
# How to create a set
print("Set Examples")
set1={1,2,3,4,5,"hello","tup"}
set2={(1,8,"python",7)}
print(set1)
print(set2)
# How to create a dictionary
print("Dictionary Examples")
dict1={"key1":"value1","key2":"value2"}
dict2={} # empty dictionary
dict3=dict({1:"apple",2:"cherry",3:"strawberry"})
print(dict1)
print(dict2)
print(dict3)

Mutable vs. immutable

The fundamental distinction that Python makes on data is whether or not the value of an object changes. An object is mutable if the value can change. Otherwise, the object is immutable.

List

Tuples

Sets

Dictionaries

Lists are mutable

Tuples are immutable

Sets are mutable and have no duplicate elements

Dictionaries are mutable and keys don’t allow duplicates

Code example

Let’s see the code examples to understand their mutability or immutability properties.

# Lists
print("Lists Examples")
list1=["hello",1,4,8,"good"]
print(list1)
list1[0]="morning" # assigning values ("hello" is replaced with "morning")
print(list1)
# Tuples
print("Tuples Examples")
tuple1=("good",1,2,3,"morning")
print(tuple1)
print(tuple1[0]) # accessing values using indexing
#tuple1[1]="change" # a value cannot be changed as they are immutable
# Sets
print("Sets Examples")
set1={1,2,3,4,5}
print(set1)
# print(set1[0]) sets are unordered, so it does not support indexing
set1.add(6)
print(set1)
set2={3,7,1,6,1} # sets does not allow duplicate values
print(set2)
# Dictionaries
print("Dictionaries Examples")
dict1={"key1":1,"key2":"value2",3:"value3"}
print(dict1.keys()) # all the keys are printed
print(dict1.values()) # all the values are printed
dict1["key1"]="replace_one" # value assigned to key1 is replaced
print(dict1.values()) # all the values are printed

Manipulation characteristics

Python has a set of built-in methods that are used on these collections. They are:

Manipulation Operations

Lists

Tuples

Sets

Dictionaries

Adding

The append() method adds a single item at the end of the list without modifying the original list

An element can’t be added to the tuple as it is immutable

The set add() method adds a given element to a set

The update() method updates the dictionary with the specified key-value pairs

Removing

The pop() method removes the item at the given index from the list and returns it

Tuples are immutable

The pop() method removes a random item from the set

The pop() method removes the specified item from the dictionary

Ordering

The sort() method sorts the elements of a given list in a specific ascending or descending order

Though tuples are ordered, the elements can’t be sorted

Elements in the set can’t be sorted as they are unordered

The sorted() method is used to sort the keys in the dictionary by default

Code example

Let’s see the code examples to understand the add, remove, and sorting operations on the built-in collections.

# List --- Adding, Removing, Ordering
print("List Examples")
list1=["apple","kiwi","banana","grapes"]
list1.append("strawberry") # strawberry is added to the list
print(list1)
list1.pop() # removes the last element from the list
print(list1)
print(list1.sort())
# Tuple --- Adding and Removing
print("Tuples Examples")
tuple1=(1,2,3,4)
# tuple1.pop() tuple cannot be modified
# tuple1.append() tuple cannot be modified
print(tuple1)
# Set --- Adding and Removing
print("Sets Examples")
set1={"water","air","food"}
set1.add("shelter") # adds an element to the set at random position
print(set1)
set1.add("clothes")
print(set1)
set1.pop() # removes random element from the set
print(set1)
# Dictionary --- Adding, Removing, Ordering
print("Dictionary Examples")
dict1={"fruit1":"apple","fruit2":"banana","veg1":"tomato"}
dict1.update({"veg2":"brinjal"})
print(dict1)
dict1.update({"veg3":"chilli"}) # updates the dictionary at the end
print(dict1)
dict1.pop("veg2")
print(dict1)

If you want to learn how to sort dictionaries in Python, visit this Answer.

Let’s explore the further differences in the operations on lists, tuples, sets, and dictionaries in Python:

Manipulation Operations

Lists

Tuples

Sets

Dictionaries

Indexing

The index() searches for a given element from the start of the list and returns the lowest index where the element appears

Searches the tuple for a specified value and returns the position of where it was found

The index of a particular element is not retrieved as they are unordered

The get() method returns the value of the item with the specified key

Counting

The count() method returns the number of times the specified element appears in the list

The count() method returns the number of times a specified value occurs in a tuple

There are no count() methods in sets as they don’t allow any duplicates

The count() method isn’t defined in the dictionary

Reversing

The reverse() method reverses the elements of the list.

The reverse() method is not defined in tuples, as they are unchangeable

The sets are unordered, which refrains from applying the reverse() method

The elements can’t be reversed because the items in the dictionary are in the form of key-value pairs

Code example

Let’s see the code examples to understand how to get index, count, and reverse operations on the built-in collections.

#List
print("List Examples:")
list1=[1,5,3,9,"apple"]
print(list1.index(9)) # returns the index value of the particular element
list2=[2,7,8,7]
print(list2.index(7)) # returns the index value of the element at its first occurence
print(list2.index(7,2)) # returns the index value of the element from the particular start position given
#Tuple
print("Tuple Examples:")
tuple1=(1,3,6,7,9,10)
print(tuple1.index(6))
print(tuple1.index(9))
#Set
print("Set Examples:")
set1={1,5,6,3,9}
# set1.index() will throw an error as they are unordered
#Dictionary
print("Dictionary Examples:")
dict1={"key1":"value1","key2":"value2"}
# dict1.index("key1") will throw an error
print(dict1.get("key1"))

Understanding the distinctions and characteristics of lists, tuples, sets, and dictionaries in Python empowers developers to select the most suitable data structure for their specific needs. Each offers unique advantages and trade-offs in terms of mutability, ordering, duplication, and retrieval efficiency.

Copyright ©2024 Educative, Inc. All rights reserved