如何使字典中除第一个键以外的所有键都小写



这是一本字典

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}}

我想让所有的字母在键除了第一个小写字母。

这是我尝试过的

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

这是失败的,因为我不确定如何应用条件,使只有第一个字母保持大写。

如果我理解正确的话:

>>> {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}}

您可以使用新键创建一个新字典,并删除旧字典。

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] 

输出为:

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}})

,它可以像普通的字典一样被评估。

在python中有一个叫做capitalize()的函数。也许会有帮助?

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

返回
Abrakadabra!

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

最新更新