Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to delete a element from nested dictionary?

I have a dictionary that like this :

card_pool = {
    'ace' : [1,11], 
    '2' : 2,
    '3' : 3,
    '4' : 4,
    '5' : 5,
    '6' : 6,
    '7' : 7,
    '8' : 8,
    '9' : 9,
    '10' : 10,
    'J' : 10,
    'Q' : 10,
    'K' : 10,
}

l_card_pool = {}
l_card_pool['spade'] = card_pool
l_card_pool['clover'] = card_pool
l_card_pool['heart'] = card_pool
l_card_pool['diamond'] = card_pool

I wanted to delete a key-value pair of :

l_card_pool['spade']['ace']

So I used :

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

del l_card_pool['spade']['ace']

What I’ve expected of print(l_card_pool) is this :

{
'spade': {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}, 
'clover': {'ace': [1, 11], '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}, 
'heart': {'ace': [1, 11], '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}, 
'diamond': {'ace': [1, 11], '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}
}

But I actually got this :

{
'spade': {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}, 
'clover': {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}, 
'heart': {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}, 
'diamond': {'2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9, '10': 10, 'J': 10, 'Q': 10, 'K': 10}
}

There is a way of deleting only l_card_pool['spade']['ace'] ?

Whole code is this :

card_pool = {
    'ace' : [1,11], 
    '2' : 2,
    '3' : 3,
    '4' : 4,
    '5' : 5,
    '6' : 6,
    '7' : 7,
    '8' : 8,
    '9' : 9,
    '10' : 10,
    'J' : 10,
    'Q' : 10,
    'K' : 10,
}

l_card_pool = {}
l_card_pool['spade'] = card_pool
l_card_pool['clover'] = card_pool
l_card_pool['heart'] = card_pool
l_card_pool['diamond'] = card_pool >create l_card_pool dictionary

print(l_card_pool) 

del l_card_pool['spade']['ace'] >What I used to delete a element from nested dictionary

print(l_card_pool)

>Solution :

All dicts l_card_pool[*] are the same dict. If you’re planning to mutate any of them, you need to copy them on creation, e.g.:

l_card_pool = {}
for suite in ('spade', 'clover', 'heard', 'diamond'):
    l_card_pool[suite] = card_pool.copy()

That creates a shallow copy of the dict. If for any reason, you’re planning to mutate e.g. l_card_pool['spade']['ace'] by removing elements from it, I’d suggest using deepcopy.

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading