DEV Community

Cover image for Dive into Daunting Lists and Dictionaries
Sahil
Sahil

Posted on • Updated on • Originally published at sahilfruitwala.hashnode.dev

Dive into Daunting Lists and Dictionaries

As I promised, here I am! I have come again with an in-depth blog post for Python lists and dictionaries. In this blog, we will take a look at the in-built methods for lists and dictionaries provided by python. There are not many complex methods that exist in python. All the in-built methods are very intuitive from name only. So, let's get started!

Lovely Lists

Python provides several in-built methods with the list. Some of them, you will use on a day-to-day basis but some you might never use. So, let's focus on important ones.

  1. insert(), append() & extend()
  2. remove(), pop(), del & clear()
  3. count(), index() & len()
  4. sort() & reverse()
  5. copy()

insert(), append() & extend()

insert(): list.insert(position, element)

Insert() method adds an element at the specified position in the list. The element can be any of the in-built data types.

1). Insert string into the list

list1 = ["Python", "Programming"]
str1 = "Learn"
list2 = ["From", "Sahil Fruitwala"]

list1.insert(0, str1)
list1.insert(3, list2)

print(list1)

#OUTPUT: ['Learn', 'Python', 'Programming', ['From', 'Sahil Fruitwala']]
Enter fullscreen mode Exit fullscreen mode

2). Insert number and boolean into the list

list1 = ["Python", "Programming"]
number1 = 13
boolean1 = False

list1.insert(0, number1)
list1.insert(10, boolean1)

print(list1)

# OUTPUT: ['Python', 'Programming', 13, False]
Enter fullscreen mode Exit fullscreen mode

Here, if we add any number more than ending index data will be added at the end of the list. So, when we did list1.insert(10, boolean1), as the list doesn't have 10 elements or index 10 it will add boolean data at the end of the list.

append(): list.append(element)

The append method adds an element at the end of the list. We can use any data type with the append method as well.

list1 = ["Python", "Programming"]
str1 = "Learn"
list2 = ["From", "Sahil Fruitwala"]

list1.append(str1)
list1.append(list2)

print(list1)
# OUTPUT: ['Python', 'Programming', 'Learn', ['From', 'Sahil Fruitwala']]
Enter fullscreen mode Exit fullscreen mode

extend(): list.extend(iterable_element)

Extend method adds every element of iterable/sequence (string, list, tuple, set) data type at the end of the list.

list1 = ["Python", "Programming"]
str1 = "Learn"
list2 = ["From", "Sahil Fruitwala"]
tuple1 = ("in", "Python 101")
set1 = {"The", "Blog Series"}

list1.extend(str1)
list1.extend(list2)
list1.extend(tuple1)
list1.extend(set1)

print(list1)

# OUTPUT: ['Python', 'Programming', 'L', 'e', 'a', 'r', 'n', 'From', 'Sahil Fruitwala', 'in', 'Python 101', 'The', 'Blog Series']
Enter fullscreen mode Exit fullscreen mode

remove(), pop(), del & clear()

remove(): list.remove(element)

The remove method removes the first instance of a specific element from the list.

list1 = [ 1, 2, 1, 1, 4, 5 ]
list1.remove(1)
print(list1)

# OUTPUT: [2, 1, 1, 4, 5]
Enter fullscreen mode Exit fullscreen mode

If we try to remove the element that does not exist in the list then python will throw the error.

list1 = [ 1, 2, 1, 1, 4, 5 ]
list1.remove(6)
print(list1)

'''
OUTPUT:

Traceback (most recent call last):
  File "C:\Users\Sahil\Desktop\1.py", line 2, in <module>
    list1.remove(6)
ValueError: list.remove(x): x not in list

'''
Enter fullscreen mode Exit fullscreen mode

pop(): list.pop() or list.pop(index)

The pop method by default removes the last element of the list and returns it. We can also pass the specific index to the pop method.

list1 = ["Python", "C++", "Java", "PHP", "Rust"]
pop_element = list1.pop()
print(pop_element)
print(list1)

# OUTPUT: Rust
# OUTPUT: ['Python', 'C++', 'Java', 'PHP']


pop_element = list1.pop(1)
print(pop_element)
print(list1)

# OUTPUT: C++
# OUTPUT: ['Python', 'Java', 'PHP']
Enter fullscreen mode Exit fullscreen mode

del : del list[index]

The keyword del removes elements from the specific index in the list. If we use the del keyword without any index, it will remove the complete variable from the computer's memory.

list1 = ["Python", "C++", "Java", "PHP", "Rust"]
del list1[2]
print(list1)

# OUTPUT: ['Python', 'C++', 'PHP', 'Rust']

list1 = ["Python", "C++", "Java", "PHP", "Rust"]
del list1
Enter fullscreen mode Exit fullscreen mode

clear(): list.clear()

Clear method removes all elements from the list.

list1 = ["Python", "C++", "Java", "PHP", "Rust"]
list1.clear()
print(list1)

# OUTPUT: []
Enter fullscreen mode Exit fullscreen mode

count(), index() & len()

*count(): * list.count(element)

The count method returns the number of occurrences of a specific element in a list.

fruits = ['apple', 'banana', 'cherry', 'mango', 'grape', 'cherry', 'cherry']
num_of_cherry = fruits.count("cherry")
print(num_of_cherry)

# OUTPUT: 3
Enter fullscreen mode Exit fullscreen mode

*index(): * list.index(element)

The index method returns the index of a specific element in the list.

fruits = ['apple', 'banana', 'cherry', 'mango', 'grape', 'cherry', 'cherry']
index_of_cherry = fruits.index("cherry")

print(index_of_cherry)

# OUTPUT: 2
Enter fullscreen mode Exit fullscreen mode

Note: If an element does not exist ion list index() will throw the error.

len(): len(list)

Len method returns the length of any sequence datatype and dictionary.

list1 = ['apple', 'banana', 'cherry', 'mango', 'grape', 'cherry', 'cherry']
str1 = "Python Programming"
dict1 = {'lang':"Python", 'Year':2021}

print(len(list1))
print(len(str1))
print(len(dict1))

# OUTPUT: 7
# OUTPUT: 18
# OUTPUT: 2
Enter fullscreen mode Exit fullscreen mode

sort() & reverse()

sort(): list.sort()

The sort method sorts all the elements of the list by default into ascending order. We can do the sort operation in descending order by providing the reverse=True argument in the sort function.

nums = [2, 5, 1, 7, 2, 3, 4, 5, 6]

nums.sort()
print(nums)
# OUTPUT: [1, 2, 2, 3, 4, 5, 5, 6, 7]

nums.sort(reverse=True)
print(nums)
# OUTPUT: [7, 6, 5, 5, 4, 3, 2, 2, 1]
Enter fullscreen mode Exit fullscreen mode

The sort method is an in-place method. It means, it does not return any value and does all the operations internally. That is the reason why we have not assigned nums.sort() to any other value. If we do that we will get the following result.

nums = [2, 5, 1, 7, 2, 3, 4, 5, 6]

new_nums = nums.sort()
print(new_nums)

# OUTPUT: None

Enter fullscreen mode Exit fullscreen mode

reverse(): list.reverse()

As the name suggests, the reverse method reverses the whole list. The reverse method is also an in-place method.

nums = [2, 5, 1, 7, 2, 3, 4, 5, 6]

nums.reverse()
print(nums)
# OUTPUT: [6, 5, 4, 3, 2, 7, 1, 5, 2]
Enter fullscreen mode Exit fullscreen mode

copy()

list.copy()

There will occur many cases during development when we want to copy the list. The copy method helps us to do that.

num1 = [2, 5, 1, 7, 2, 3, 4, 5, 6]
num2 = num1

num2.reverse()
print(num1)
print(num2)

# OUTPUT: 
[6, 5, 4, 3, 2, 7, 1, 5, 2]
[6, 5, 4, 3, 2, 7, 1, 5, 2]

Enter fullscreen mode Exit fullscreen mode

In the general case, num2 will have copied data of num1. But, in the case of the list, it just copies the memory address of num1 to num2. So, whatever changes we make in num2 they all will reflect in num1, and vice versa. So, to copy lists properly we have to use the copy method.

num1 = [2, 5, 1, 7, 2, 3, 4, 5, 6]
num2 = num1.copy()

num2.reverse()
print(num1)
print(num2)

# OUTPUT: 
[2, 5, 1, 7, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 7, 1, 5, 2]

Enter fullscreen mode Exit fullscreen mode

Alternatively, you can use the list(list_name) as well.

num1 = [2, 5, 1, 7, 2, 3, 4, 5, 6]
num2 = list(num1)

num2.reverse()
print(num1)
print(num2)

# OUTPUT: 
[2, 5, 1, 7, 2, 3, 4, 5, 6]
[6, 5, 4, 3, 2, 7, 1, 5, 2]

Enter fullscreen mode Exit fullscreen mode

Dope Dictionaries

  1. clear(), pop() & popitem()
  2. get(), items() & keys()
  3. update() & fromkeys()

clear(), pop() & popitem()

clear(): dictionary.clear()

The clear() method for dictionary works the same way it works in the list. This method removes all the elements from a dictionary.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}


print(blog)
# OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala', 'year': 2021}

blog.clear()
print(blog)
# OUTPUT: {}
Enter fullscreen mode Exit fullscreen mode

pop(): dictionary.pop() or dictionary.pop(key, default_value)

The pop() method removes and returns the specific element from the dictionary.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}


print(blog)
# OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala', 'year': 2021}

year = blog.pop("year")
print(blog) # OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala'}
print(year) # 2021
Enter fullscreen mode Exit fullscreen mode

The pop() is used when we want some default value in case if the key does not exist.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}

year = blog.pop("years", "NotFound")
print(blog) # OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala', 'year': 2021}

print(year) # NotFound
Enter fullscreen mode Exit fullscreen mode

popitem(): dictionary.popitem()

The popitem() removes the last key-value pair from dictionary and returns as a tuple.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}

year = blog.popitem()
print(blog)
# OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala'}

print(year)
# OUTPUT: ('year', 2021)
Enter fullscreen mode Exit fullscreen mode

get(), items(), keys() & values()

get(): dictionary.get(keyname)

The get method extracts the value of the specified key

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}

year = blog.get("year")
print(year)
# OUTPUT: 2021
Enter fullscreen mode Exit fullscreen mode

items(): dictionary.items()

The items method returns the view object of the dictionary. The view object contains all the key-value pairs. One drawback of using the items() method is, if you make any change in the root or original dictionary it will reflect in view object variable as well.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}

view_object = blog.items()

blog['year'] = 2022
print(view_object)

# OUTPUT: dict_items([('language', 'Python'), ('Blogger', 'Sahil Fruitwala'), ('year', 2022)])
Enter fullscreen mode Exit fullscreen mode

key() & values(): dictionary.keys() and dictionary.values()

As the name suggests, keys() and values() methods return view object or keys and values of given dictionary.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}

keys = blog.keys()
print(keys)
# OUTPUT: dict_keys(['language', 'Blogger', 'year'])

values = blog.values()
print(values)
# OUTPUT: dict_values(['Python', 'Sahil Fruitwala', '2022'])
Enter fullscreen mode Exit fullscreen mode

update() & fromkeys()

update(): dictionary.get({key:value})

The update method updates the existing key with a specified value and if the key does not exist it adds the new key-value pair.

blog =  {
  "language": "Python",
  "Blogger": "Sahil Fruitwala",
  "year": 2021
}

blog.update({"type": "New"})
print(blog)
# OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala', 'year': 2021, 'type': 'New'}

blog.update({"type": "OLD"})
print(blog)
# OUTPUT: {'language': 'Python', 'Blogger': 'Sahil Fruitwala', 'year': 2021, 'type': 'OLD'}
Enter fullscreen mode Exit fullscreen mode

fromkeys(): dict.fromkeys(keys, defaultvalue)

When we new parameters from the beginning but are not aware of values to them, at that time we can create a dictionary with keys and default value.

keys =  ( "Python", "Sahil Fruitwala", 2021 )

blog = dict.fromkeys(keys)
print(blog)
# OUTPUT: {'Python': None, 'Sahil Fruitwala': None, 2021: None}

blog1 = dict.fromkeys(keys, "")
print(blog1)
# OUTPUT: {'Python': '', 'Sahil Fruitwala': '', 2021: ''}
Enter fullscreen mode Exit fullscreen mode

Conclusion

Finally! We are at the end of this section 😁.

I know, it is a lot to take in at a time. But, you don't need to remember everything that I have mentioned here. I just showed you so that you can recall what is possible and what is not. There are some other methods as well that I have not mentioned here.

If you want to find out more about the lists and dictionaries, check out on GeeksforGeeks.


That was it. Thank you for reading.

I know it is a lot but I hope, you were able to absorb some knowledge. If you have any questions or doubt mention them in the comment section or reach out to me on Twitter, LinkedIn or Instagram.

If you want me to explain any specific topic, mention that in the comment section below 👇.

Discussion (0)