For loop dynamic nested dictionary python

I am new to Python, and trying to learn it "on the job". And I am required to do this.

Is it possible to create a 'dictionary1' dynamically which takes another 'dictionary2' as value, where 'dictionary2' is also getting updated in every for loop. Basically in terms of code, I tried:

fetch_value = range(5) #random list of values (not in sequence)

result = {} #dictionary2
ret = {} #dictionary1

list1 = [0, 1] #this list is actually variable length, ranging from 1 to 10 (assumed len(list1) = 2 for example purpose only)

for idx in list1:
    result[str(idx)] = float(fetch_value[1])
    ret['key1'] = (result if len(list1) > 1 else float(fetch_value[1])) # key names like 'key1' are just for representations, actual names vary
    result[str(idx)] = float(fetch_value[2])
    ret['key2'] = (result if len(list1) > 1 else float(fetch_value[2]))
    result[str(idx)] = float(fetch_value[3])
    ret['key3'] = (result if len(list1) > 1 else float(fetch_value[3]))
    result[str(idx)] = float(fetch_value[4])
    ret['key4'] = (result if len(list1) > 1 else float(fetch_value[4]))

print ret

This outputs to:

{'key1': {'0': 4, '1', 4}, 'key2': {'0': 4, '1', 4}, 'key3': {'0': 4, '1', 4}, 'key4': {'0': 4, '1', 4}}

What I need:

{'key1': {'0': 1, '1', 1}, 'key2': {'0': 2, '1', 2}, 'key3': {'0': 3, '1', 3}, 'key4': {'0': 4, '1', 4}}

anything obvious I am doing wrong here?

A more concise way to do this would be a dictionary comprehension:

fetch_value = range(5)
list1 = [0, 1]
print {
   'key{}'.format(i): {
      str(list_item): float(fetch_value[i]) for list_item in list1
   }
   if len(list1) > 1
   else float(fetch_value[i])
   for i in xrange(1, 5)
}

Output:

{
   'key3': {
      '1': 3.0,
      '0': 3.0
   },
   'key2': {
      '1': 2.0,
      '0': 2.0
   },
   'key1': {
      '1': 1.0,
      '0': 1.0
   },
   'key4': {
      '1': 4.0,
      '0': 4.0
   }
}

And with list1 = [0], where it seems you want a float value instead of a dictionary, the output would be:

{
   'key3': 3.0,
   'key2': 2.0,
   'key1': 1.0,
   'key4': 4.0
}


Suggestion : 2

A nested dictionary is created the same way a normal dictionary is created. The only difference is that each value is another dictionary.,Adding or updating nested dictionary items is easy. Just refer to the item by its key and assign a value. If the key is already present in the dictionary, its value is replaced by the new one.,There are several ways to create a nested dictionary using a type constructor called dict().,A dictionary can contain another dictionary, which in turn can contain dictionaries themselves, and so on to arbitrary depth. This is known as nested dictionary.

D = {
   'emp1': {
      'name': 'Bob',
      'job': 'Mgr'
   },
   'emp2': {
      'name': 'Kim',
      'job': 'Dev'
   },
   'emp3': {
      'name': 'Sam',
      'job': 'Dev'
   }
}

D = dict(emp1 = {
      'name': 'Bob',
      'job': 'Mgr'
   },
   emp2 = {
      'name': 'Kim',
      'job': 'Dev'
   },
   emp3 = {
      'name': 'Sam',
      'job': 'Dev'
   })

print(D)
# Prints {
   'emp1': {
      'name': 'Bob',
      'job': 'Mgr'
   },
   # 'emp2': {
      'name': 'Kim',
      'job': 'Dev'
   },
   # 'emp3': {
      'name': 'Sam',
      'job': 'Dev'
   }
}

IDs = ['emp1', 'emp2', 'emp3']

EmpInfo = [{
      'name': 'Bob',
      'job': 'Mgr'
   },
   {
      'name': 'Kim',
      'job': 'Dev'
   },
   {
      'name': 'Sam',
      'job': 'Dev'
   }
]

D = dict(zip(IDs, EmpInfo))

print(D)
# Prints {
   'emp1': {
      'name': 'Bob',
      'job': 'Mgr'
   },
   # 'emp2': {
      'name': 'Kim',
      'job': 'Dev'
   },
   # 'emp3': {
      'name': 'Sam',
      'job': 'Dev'
   }
}

IDs = ['emp1', 'emp2', 'emp3']
Defaults = {
   'name': '',
   'job': ''
}

D = dict.fromkeys(IDs, Defaults)

print(D)
# Prints {
   'emp1': {
      'name': '',
      'job': ''
   },
   # 'emp2': {
      'name': '',
      'job': ''
   },
   # 'emp3': {
      'name': '',
      'job': ''
   }
}

D = {
   'emp1': {
      'name': 'Bob',
      'job': 'Mgr'
   },
   'emp2': {
      'name': 'Kim',
      'job': 'Dev'
   },
   'emp3': {
      'name': 'Sam',
      'job': 'Dev'
   }
}

print(D['emp1']['name'])
# Prints Bob

print(D['emp2']['job'])
# Prints Dev

print(D['emp1']['salary'])
# Triggers KeyError: 'salary'


Suggestion : 3

Last Updated : 10 Feb, 2022

Output:
 

Nested dictionary 1 - {
   'Dict1': {},
   'Dict2': {}
}

Nested dictionary 2 - {
   'Dict1': {
      'name': 'Ali',
      'age': '19'
   },
   'Dict2': {
      'name': 'Bob',
      'age': '25'
   }
}

Nested dictionary 3 - {
   'Dict1': {
      1: 'G',
      2: 'F',
      3: 'G'
   },
   'Dict2': {
      1: [1, 2],
      'Name': 'Geeks'
   }
}

Output: 
 

Initial nested dictionary: -{}

After adding dictionary Dict1 {
   'Dict1': {
      'age': 21,
      'name': 'Bob'
   }
}

After adding dictionary Dict1 {
   'Dict1': {
      'age': 21,
      'name': 'Bob'
   },
   'Dict2': {
      'age': 25,
      'name': 'Cara'
   }
}


Suggestion : 4

 A nested dictionary, as we see, is a good option when we have to store data in a structured way. We can access the values easily. For example d['age'] will return 34 and d['name']['last'] will return 'Smith'.,Instead, the dictionary values can be lists or even another dictionary. This last case is what we called a nested dictionary. As we can see in the example below the key ‘name’ has dictionary as value.,Then “d.item” returns the items of the dictionary as (key, value) pairs that are saved in “k” and “v” respectively in each loop. Then we can use two options to resolve whether “v”, the value, is a dictionary: ,It must also be said that this last example was the slowest in method 1 to process the 10,000-entry test dictionary with random nesting.

In Python, we can write this structure as:

course = {
   'title': 'Programming for children',
   'instructor': {
      'name': 'Mary',
      'mail': ''
   },
   'students': {
      'n1': {
         'name': 'Peter',
         'age': '11'
      },
      'n2': {
         'name': 'James',
         'age': '12'
      },
      'n3': {
         'name': 'Emma',
         'age': '10'
      }
   },
   'modality': 'google meet every monday from 18 to 19 hs'
}

In Python we can implement this idea in the following way:

# Example 1
def dict_walk(d):
   for k, v in d.items():
   if type(v) == dict: # option 1 with“ type()”
#if isinstance(v, dict): # option 2 with“ isinstance()”
print(k) # this line is
for printing each nested key
dict_walk(v)
else :
   print(k, ': ', v)

dict_walk(course)

The output of this program is:

title: Programming
for children
instructor
name: Mary
mail: mary @abc.com
students
n1
name: Peter
age: 11
n2
name: James
age: 12
n3
name: Emma
age: 10
modality: google meet every monday from 18 to 19 hs


Suggestion : 5

In the above program, the first loop returns all the keys in the nested dictionary people. It consist of the IDs p_id of each person. We use these IDs to unpack the information p_info of each person.,In the above program, we delete both the internal dictionary 3 and 4 using del from the nested dictionary people. Then, we print the nested dictionary people to confirm changes.,The second loop goes through the information of each person. Then, it returns all of the keys name, age, sex of each person's dictionary.,In the above program, we delete the key:value pairs of married from internal dictionary 3 and 4. Then, we print the people[3] and people[4] to confirm changes.

In Python, a dictionary is an unordered collection of items. For example:

dictionary = {
   'key': 'value',
   'key_2': 'value_2'
}

In Python, a nested dictionary is a dictionary inside a dictionary. It's a collection of dictionaries into one single dictionary.

nested_dict = {
   'dictA': {
      'key_1': 'value_1'
   },
   'dictB': {
      'key_2': 'value_2'
   }
}

Example 1: How to create a nested dictionary

people = {
   1: {
      'name': 'John',
      'age': '27',
      'sex': 'Male'
   },
   2: {
      'name': 'Marie',
      'age': '22',
      'sex': 'Female'
   }
}

print(people)


Suggestion : 6

Compared with a normal dictionary, it also contains the key and its value pairs.,We have created a dictionary containing the data items in the form of pairs. We have created a list of paired items and made them a dictionary.,We have created a nested dictionary, which contains the empty data set, or an empty dictionary that does not contain any data item with their corresponding key values.,We have created a dictionary that does not contain any of the keys with the corresponding values. Further, we will perform the nested operation inside this dictionary.

Printing the dictionary that contains integer keys with their corresponding values {
   1: 'Rina',
   2: 'Gita',
   3: 'Sita'
}

Simple empty dictionary: {}

Nested dictionary are as follows - {
   'dict1': {},
   'dict2': {},
   'dict3': {}
}

Printing the dictionary that contains string keys with their corresponding integer values {
   'A': 1,
   'B': 2,
   'C': 3,
   'D': 4,
   'E': 5
}

Dictionary with each item as a pair: {
   1: 'silk',
   2: 'one'
}

Dictionary after adding 3 elements: {
   1: 'Java',
   2: 'Tpoint',
   3: 1
}


How do you make a nested dictionary dynamically in Python?

To create a nested dictionary, simply pass dictionary key:value pair as keyword arguments to dict() Constructor. You can use dict() function along with the zip() function, to combine separate lists of keys and values obtained dynamically at runtime.

How do you get a value from a nested dictionary python?

Access Values using get() Another way to access value(s) in a nested dictionary ( employees ) is to use the dict. get() method. This method returns the value for a specified key. If the specified key does not exist, the get() method returns None (preventing a KeyError ).

How do you break nested dictionaries in Python?

To delete an item stored in a nested dictionary, we can use the del statement. The del statement lets you delete an object. del is written like a Python break statement, on its own line, followed by the item in the dictionary that you want to delete.

How do you append to a dictionary?

To append an element to an existing dictionary, you have to use the dictionary name followed by square brackets with the key name and assign a value to it.