Search code examples
python-3.xnesteddictionary-comprehension

How can I enter a dictionary inside an another empty dictionary?


The example code -

innerdict = {}
outerdict = {}
for line in range(1, 10, 2):
    for j in range(1, 10, 2):
        line_tuple = ("Item" + str( line ), int( line ))
        key = line_tuple[1]
        if line ==j:
           outerdict[key] = dict( innerdict )
           outerdict[key] = {'Name': '{0}'.format( "item"+str(j) ), 'Price': '{0}'.format( j )}
print(outerdict)

The ouput comes out like this-

{1: {'Name': 'item1', 'Price': '1'}, 3: {'Name': 'item3', 'Price': '3'}, 5: {'Name': 'item5', 'Price': '5'}, 7: {'Name': 'item7', 'Price': '7'}, 9: {'Name': 'item9', 'Price': '9'}}

The above output is achievable since it is conventional. I found a lot of online suggestions regarding nested dictionary comprehension.

But I want the output to come out like below-

{{'Name': 'item1', 'Price': '1'}, {'Name': 'item3', 'Price': '3'}, {'Name': 'item5', 'Price': '5'},  {'Name': 'item7', 'Price': '7'}, {'Name': 'item9', 'Price': '9'}}

Thanks in advance!


Solution

  • This is not possible, as the dict objects are not hashable.

    {{1:2}} would mean putting a dict {1:2} into a set, which is not possible because of the un-hashability of the objects mentioned above. Better put them in a list:

    [{1:2}, {2:3}]