Modules

Introduction To Python
  1. Advantages Of Learning Python As The First Programming Language
  2. Easy Python Setup Guide For Beginners
Basic Syntax And Variables
  1. Python Syntax Fundamentals
  2. Python Variables And Data Types
  3. Python Basic Operations
Control Flow
  1. Python Conditional Statements
  2. Python Loops
Functions And Modules
  1. Defining And Calling Python Functions
  2. Introduction To Python Modules And Importing
  3. Understanding Python Built In Functions Part 1
  4. Understanding Python Built In Functions Part 2
  5. Understanding Python Built In Functions Part 3
  6. Understanding Python Built In Functions Part 4
  7. Understanding Python Lambda Functions
Python Lists And Touples
  1. Manipulate Python Lists And Touples
  2. 5 Ways To Remove Items From A Python List By Index
  3. 5 Different Approaches To Check For Duplicate Values In Python Lists
  4. 5 Different Approaches To Check For A Specific Value In Python Lists
  5. 5 Various Approaches To Modify Elements In Python Lists
  6. Understanding Shallow Copy And Deep Copy In Python Lists
  7. 6 Various Approaches To Duplicating Lists In Python
  8. Exploring 8 Various Iteration Techniques In Python Lists
  9. Exploring Python List Concatenation Methods
  10. All You Must Know About Python Slicing
  11. Exploring Various Methods For Comparing Python Lists
  12. Converting Various Data Types To Python Lists
  13. Removing Duplicate Values From Python Lists
  14. Extend A Python List To A Desired Length
  15. Shorten A Python List To A Specific Length
  16. Efficient Ways To Creating Sequences In Python
Python Dictionaries
  1. Manipulate Python Dictionaries
  2. Understanding Python Enumerate Dictionary
  3. Efficient Ways Removing Items From Python Dictionaries
  4. 5 Different Ways To Check For Duplicate Values In Python Dictionaries
  5. Check For A Specific Value In Python Dictionaries
  6. Get Values By Key In Python Nested Dictionary
  7. 7 Different Ways To Duplicating A Dictionary In Python
  8. 5 Various Iteration Techniques In Python Dict
  9. 4 Different Methods For Dictionary Concatenation In Python
  10. 4 Different Ways Of Comparing Python Dicts
  11. Converting Various Data Types To Python Dictionaries
  12. Efficient Ways To Remove Duplicate Values From Python Dictionaries
  13. Extend A Python Dictionary To A Desired Length
  14. Shorten Python Dictionaries To A Specific Length
  15. Efficient Approaches To Remove An Item By Value In Python Dictionaries
Python Sets
  1. Manipulate Python Sets
File Handling
  1. Reading From And Writing To Files In Python
  2. Python File Modes And Handling Exceptions
Object Oriented Programming
  1. Python Classes And Objects
  2. Python Inheritance Encapsulation And Polymorphism
Python Advanced Data Structures
  1. Python Collection Module
  2. Advanced Python Data Manipulation Techniques
Error Handling And Debugging
  1. Python Exception Handling
  2. Python Debugging Techniques And Tools
Regular Expressions
  1. Python Regular Expressions In Text Processing
  2. Python Regular Expressions Pattern Matching
Concurrency And Parallelism
  1. Threading Vs Multiprocessing In Python
  2. How To Achieve Concurrency And Parallelism In Python
  3. Concurrent Programming With Asyncio
Working With Apis
  1. Making Http Requests In Python
  2. Parsing Json Xml Responses In Python
Build Apis With Python Requests
  1. Python Requests Crud Operations
  2. Retry In Python Requests
  3. Python Requests Timeout
Build Apis With Python Urllib3
  1. Disabling Hostname Verification In Python Example
Build Apis With Python Aiohttp
  1. Asynchronous Crud Operations In Python
  2. Retry In Python Aiohttp Async Requests
Database Interaction
  1. Connecting To Databases In Python
  2. Python Crud Operations And Orm Libraries
Python For Web Development
  1. Introduction To Python Web Frameworks
  2. Building Web Applications Using Flask
  3. Building Web Applications Using Django
  4. Building Web Applications Using Fastapi
Data Analysis And Visualization
  1. Introduction To Numpy Pandas And Matplotlib
  2. Analyzing Datasets And Visualizations In Python
Machine Learning With Python
  1. Machine Learning Concepts And Python
  2. Introduction To Scikit Learn And Tensorflow Keras
Python Typing Module
  1. Type Error Not Subscriptable While Using Typing
All Course > Python > Python Dictionaries Nov 07, 2023

Modify Values by Key in Python Nested Dictionary

Python is a powerful programming language, offers an array of data structures to handle complex information. One such structure is the nested dictionary, a collection of dictionaries within a dictionary. In this article, we go through a Python script that showcases the use of nested dictionaries and introduces two functions for modifying their values.

Understanding the Nested Dictionary

The provided Python script begins by defining a nested dictionary named nested_dict. This dictionary encapsulates information about two individuals, ‘Alice’ and ‘Bob’. Each person is represented as a sub-dictionary containing attributes such as name, age, hobbies, and addresses. Notably, the addresses are stored as a list of dictionaries, each detailing the city, street, and zipcode.

nested_dict = {
    'person1': {
        'name': 'Alice',
        'age': 30,
        'hobbies': ['reading', 'traveling', 'painting'],
        'addresses': [
            {
            'city': 'Wonderland',
            'street': '123 Dream Lane',
            'zipcode': '56789'
            }
        ],
    },
    'person2': {
        'name': 'Bob',
        'age': 29,
        'hobbies': ['footbal', 'cricket', 'swimming'],
        'addresses': [
            {
            'city': 'DxDolds',
            'street': '213 Sky Lane',
            'zipcode': '43456'
            }
        ],
    }
}

This structure provides a comprehensive way to organize and access information, especially when dealing with complex datasets.

Modifying Values in a Nested Dictionary

The script introduces two functions, update_value_for_key and update_value_for_new_key, designed to modify values associated with a specified key within the nested dictionary. Let’s explore each function in detail.

Function 1: update_value_for_key

The first function, update_value_for_key, adopts a recursive approach to traverse the nested dictionary. It checks if the target key exists in the current dictionary level and, if found, updates the associated value. This function employs a pass-by-reference mechanism, meaning it directly alters the original dictionary.

def update_value_for_key(json_obj, target_key, target_val):
    if isinstance(json_obj, dict):
        if target_key in json_obj:
            json_obj[target_key] = target_val
        for value in json_obj.values():
            update_value_for_key(value, target_key, target_val)
    elif isinstance(json_obj, list):
        for item in json_obj:
            update_value_for_key(item, target_key, target_val)

To illustrate the function, the script calls update_value_for_key to change the ‘zipcode’ value in the original nested_dict:

# Do change the original dict because pass by reference
update_value_for_key(nested_dict, "zipcode", "12453")
print(nested_dict)

This modification directly affects the original data, showcasing the power of pass-by-reference in Python.

Function 2: update_value_for_new_key

The second function, update_value_for_new_key, takes a different approach by creating a deep copy of the original nested dictionary using copy.deepcopy. This function then modifies the copied data, leaving the original dictionary untouched. The deep copy ensures that the new object in memory has no shared references with the original data.

import copy

def update_value_for_new_key(json_obj, target_key, target_val):
    if isinstance(json_obj, dict):
        if target_key in json_obj:
            json_obj[target_key] = target_val
        for value in json_obj.values():
            update_value_for_new_key(value, target_key, target_val)
    elif isinstance(json_obj, list):
        for item in json_obj:
            update_value_for_new_key(item, target_key, target_val)
    return json_obj

To demonstrate the difference, the script calls update_value_for_new_key with a deep copy of nested_dict:

# Doesn't change original dict because deep copy
new_json_obj = update_value_for_new_key(copy.deepcopy(nested_dict), "zipcode", "50000")
print(new_json_obj)

This time, the modification occurs on the copied data, leaving the original dictionary intact.

Conclusion

In summary, the provided Python script introduces the concept of nested dictionaries and demonstrates how to manipulate their values using two distinct approaches. The pass-by-reference mechanism in the first function, update_value_for_key, allows direct modification of the original dictionary. On the other hand, the second function, update_value_for_new_key, utilizes a deep copy to create a modified version of the data, leaving the original untouched.

Understanding these techniques is crucial when working with complex data structures in Python, offering flexibility in managing information without compromising the integrity of the original dataset. Whether modifying values in place or creating a modified copy, Python’s versatility shines through in handling nested dictionaries efficiently.

Comments

There are no comments yet.

Write a comment

You can use the Markdown syntax to format your comment.

Tags: python dict