Dictionary – Practice Program 1

Dictionary is an unordered, mutable, dynamic size collection datatype in Python. Dictionary stores elements in key-value pairs, where elements are indexed by keys. Dictionary keys can only be of immutable datatype but values can be of any datatype. From Python version 3.7 and later, dictionaries maintain insertion order.

In previous articles, we learned about various methods and operations that we can perform on Dictionary in Python. In this article we will work on practice programs related to Python Dictionary.

Program – Problem Statement

We will be given dictionary with students scores list. This dictionary key will be student_id and value will be the list of scores for that student. We need to calculate the final grade for all the students based on their average scores. Grade will be calculated based on the given criteria:

  • A – for average score >= 90%
  • B – for average score >= 80%
  • C – for average score >= 70%
  • D – for average score >= 60%
  • E – for average score < 60%

Output should be a dictionary with student_id as key and calculated grade as value.

Test Case 1
Input: input_dict = {"stu1": [76, 87, 65, 77], "stu2": [87, 57, 69, 74]}
Output: {'stu1': 'C', 'stu2': 'C'}

Test Case Explanation
Dictionary input_dict with student id and list of student scores is given as an input. This dictionary has student ids as key stu1 and stu2 and their value is a list of numbers, which represent the scores of a student. For each student we will calculate the average score for that student. i.e for stu1 average score will be 76.25 = (76 + 87 + 65 + 77)/4 and for stu2 average score will be 71.75 = (87 + 57 + 69 + 74)/4. For the average score of a student, we will calculate the grade baed on given grade criteria. i.e. stu1 = 76.25 is greater than 70 but less than 80, so grade will be C and for stu2 = 71.75 is greater than 70 but less than 80, so grade will be C. Output the dictionary with key as student id and value as grade for that student like {'stu1': 'C', 'stu2': 'C'}. 

Program – Solution

Steps for Program solution

  1. Dictionary input_dict with key-value pairs will be given as an input. Key as a student id and value as list of student scores.
  2. Declare an empty dictionary output_dict for output.
  3. Using for loop, iterate through all the elements of input_dict and get the next key from the dictionary elements.
  4. Get the value as stu_list for the key from the dictionary. This value will be a list of numbers.
  5. Define a variable total_score = 0. This will be used to calculate total sum of scores for a student.
  6. Using for loop, iterate through the stu_list and calculate sum of all the numbers into variable total_score.
  7. calculate the average score average_score using total_score divided by total length of list i.e len(stu_list).
  8. Based on if, elif and else conditions, calculate the grade criteria for the average_score.
  9. Add the key value pair into the output dictionary with key as student id and value as grade for the student.

Program – Test Cases

Test Case 1
Input: input_dict = {"stu1": [76, 87, 65, 77], "stu2": [87, 57, 69, 74]}
Output: {'stu1': 'C', 'stu2': 'C'}

Test Case 2
Input: input_dict = {"stu1": [76, 87, 85, 77], "stu2": [87, 67, 89, 74], "stu3": [87, 77, 89, 94]}
Output: {'stu1': 'B', 'stu2': 'C', 'stu3': 'B'}

Test Case 3
Input: input_dict = {"stu1": [93, 87, 85, 97], "stu2": [82, 97, 83, 74], "stu3": [77, 74, 88, 93]}
Output: {'stu1': 'A', 'stu2': 'B', 'stu3': 'B'}

Test Case 4
Input: input_dict = {"stu1": [73, 57, 55, 47], "stu2": [52, 77, 63, 54], "stu3": [87, 44, 58, 63]}
Output: {'stu1': 'E', 'stu2': 'D', 'stu3': 'D'}

Program – Solution Code

input_dict = {"stu1": [76, 87, 85, 77], "stu2": [87, 67, 89, 74], "stu3": [87, 77, 89, 94]}
output_dict = {}
for key in input_dict:
    stu_list = input_dict[key]
    total_score = 0
    for m in stu_list:
        total_score += m
    average_score = total_score / len(stu_list)

    if average_score >= 90:
        output_dict[key] = "A"
    elif average_score >= 80:
        output_dict[key] = "B"
    elif average_score >= 70:
        output_dict[key] = "C"
    elif average_score >= 60:
        output_dict[key] = "D"
    else:
        output_dict[key] = "E"

print(output_dict)

Program 1 Output{'stu1': 'B', 'stu2': 'C', 'stu3': 'B'}

Summary

We analysed and wrote a complete Python program including Dictionary datatype. Following scenario were covered:

Code – Github Repository

All code snippets and programs for this article and for Python tutorial, can be accessed from Github repository – Comments and Docstring in Python.

Python Topics


Interview Questions & Answers

Comments

No comments yet. Why don’t you start the discussion?

Leave a Reply

Your email address will not be published. Required fields are marked *