qualifier_2 = {'KKR' : {'Chris Lynn': 4,
'Sunil Narine': 10,
'Gautam Gambhir (c)': 12,
'Robin Uthappa (wk)': 1,
'Ishank Jaggi': 28,
'Colin Grandhomme': 0,
'Suryakumar Yadav': 31,
'Piyush Chawla': 2,
'Nathan Coulter-Nile': 6,
'Umesh Yadav': 2,
'Ankit Rajpoot': 4,
'Extra runs': 7,
'Total batted': 10},
'MI': {'Lendl Simmons': 3,
'Parthiv Patel (wk)': 14,
'Ambati Rayudu': 6,
'Rohit Sharma (c)': 26,
'Krunal Pandya': 45,
'Kieron Pollard': 9,
'Extra runs': 8,
'key-valueal batted': 6}
}
this is the nested dictionary, I want to remove a certain key value pair and I want the sum of all the scores.
I think this is the fastest solution, without loop:
summ_KRR = sum(qualifier_2['KKR'].values()) # sum of 'KRR'
sum_all = sum(map(lambda x: sum(qualifier_2[x].values()),qualifier_2.keys())) # all sum
qualifier_2.pop('KKR', None) # delete 'KRR'
print('sum:{}'.format(summ_KRR))
print(qualifier_2)
Removing a key/value pair:
key_to_remove = 'Krunal Pandya'
for key in qualifier_2:
inner_dict = qualifier_2[key]
if key_to_remove in inner_dict:
del inner_dict[key_to_remove]
break
Summing of key values:
total = sum([val for outer_key in qualifier_2
for __, val in qualifier_2[outer_key].items()])
Testing removing:
import pprint
pprint.pprint(qualifier_2) # after removing 'Krunal Pandya'
Output:
{'KKR': {'Ankit Rajpoot': 4, 'Chris Lynn': 4, 'Colin Grandhomme': 0, 'Extra runs': 7, 'Gautam Gambhir (c)': 12, 'Ishank Jaggi': 28, 'Nathan Coulter-Nile': 6, 'Piyush Chawla': 2, 'Robin Uthappa (wk)': 1, 'Sunil Narine': 10, 'Suryakumar Yadav': 31, 'Total batted': 10, 'Umesh Yadav': 2}, 'MI': {'Ambati Rayudu': 6, 'Extra runs': 8, 'Kieron Pollard': 9, 'Lendl Simmons': 3, 'Parthiv Patel (wk)': 14, 'Rohit Sharma (c)': 26, 'key-valueal batted': 6}}
Testing summing:
print(total) # with original qualifier_2
Output:
234
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.