Khan
Khan

Reputation: 233

Python how to delete a specific value from a dictionary key with multiple values?

I have a dictionary with multiple values per key and each value has two elements (possibly more). I would like to iterate over each value-pair for each key and delete those values-pairs that meet some criteria. Here for instance I would like to delete the second value pair for the key A; that is: ('Ok!', '0'):

myDict = {'A': [('Yes!', '8'), ('Ok!', '0')], 'B': [('No!', '2')]}

to:

myDict = {'A': [('Yes!', '8')], 'B': [('No!', '2')]}

I can iterate over the dictionary by key or value, but can't figure out how I delete a specific value.

Upvotes: 1

Views: 24100

Answers (3)

Shivam
Shivam

Reputation: 620

You can also do like this:

myDict = {'A': [('Yes!', '8'), ('Ok!', '0')], 'B': [('No!', '2')]}
del myDict['A'][1]
print(myDict)

Explanation :

myDict['A'] - It will grab the Value w.r.t Key A

myDict['A'][1] - It will grab first index tuple

del myDict['A'][1] - now this will delete that tuple

Upvotes: 0

Amin Ba
Amin Ba

Reputation: 2467

myDict = {'A': [('Yes!', '8'), ('Ok!', '0')], 'B': [('No!', '2')]}
for v in myDict.values():
    for x in v:
        if x[0] == 'Ok!' and x[1] == '0':
            v.remove(x)
print(myDic)

Upvotes: -3

Em L
Em L

Reputation: 328

The code like this:

myDict = {'A': [('Yes!', '8'), ('Ok!', '0')], 'B': [('No!', '2')]}
for v in myDict.values():
    if ('Ok!', '0') in v:
        v.remove(('Ok!', '0'))
print(myDict)

Upvotes: 5

Related Questions