Home > Blockchain >  How to make all keys except first key lowercase in dictionary
How to make all keys except first key lowercase in dictionary

Time:10-01

Here is a dictionary

dict1 = {'math': {'JOHN': 7,
                  'LISA': 4,
                  'KARYN': 3},
       'eng': {'LISA': 5,
              'TOBY':4,
              'KARYN':11,
              'RYAN':3},
       'phy': {'KARYN': 7,
              'JOHN': 7,
              'STEVE':9,
              'JOE':9}}

I would like to make the all letters in the keys except the 1st lower case.

This is what i've attempted

for i in dict1:
    dict1 = dict(k.lower(), v) for k =! k[0], v in dict1[i].items())
dict1

It's failing because i'm not exactly sure how to apply the condition so that only the 1st letter remains capital.

CodePudding user response:

If I understand correctly:

>>> {k: {kk.capitalize(): vv for kk, vv in v.items()} for k, v in dict1.items()} 
{'math': {'John': 7, 'Lisa': 4, 'Karyn': 3},
 'eng': {'Lisa': 5, 'Toby': 4, 'Karyn': 11, 'Ryan': 3},
 'phy': {'Karyn': 7, 'John': 7, 'Steve': 9, 'Joe': 9}}

CodePudding user response:

You can just create a new dictionary using the new keys and delete the old one.

from collections import defaultdict

# this creates a dictionary of dictionaries
dict2 = defaultdict(dict)

for key in dict1.keys():
    for name in dict1[key]:
        # get only the first letter in caps and the rest in lower
        newname = name[0]   name.lower()[1:]
        # create a new entry in the new dictionray using the old one
        dict2[key][newname] = dict1[key][name] 

The output is:

defaultdict(dict,
            {'eng': {'Karyn': 11, 'Lisa': 5, 'Ryan': 3, 'Toby': 4},
             'math': {'John': 7, 'Karyn': 3, 'Lisa': 4},
             'phy': {'Joe': 9, 'John': 7, 'Karyn': 7, 'Steve': 9}})

which can be assessed just like a regular dictionary.

CodePudding user response:

In python there is a function called capitalize(). Maybe it could help?

your_string = "ABRAKADABRA!"
print(your_string.capitalize())

returns

Abrakadabra!

https://www.geeksforgeeks.org/string-capitalize-python/

  • Related