我有一本字典:
data = {'Common': {'height': 165, 'weight': 70, 'measure': ['cm', 'kg']},
'Man': 'handsome',
'Woman': {'feature': 'pretty', 'weight': 50},
'Dog': {'feature': 'barks', 'height': 10, 'weight': 20}}
只想将字典键转换为大写
尝试了以下代码:
d = {}
d1 = {}
for k, v in data.items():
if isinstance(v, dict):
for i, j in v.items():
d1[i.upper()] = j
d[k.upper()] = d1
else:
d[k.upper()] = v
print(d)
…产生的输出带有不必要的键,高度和重量合理化如下:
{'COMMON': {'HEIGHT': 10, 'WEIGHT': 20, 'MEASURE': ['cm', 'kg'], 'FEATURE': 'barks'},
'MAN': 'handsome',
'WOMAN': {'HEIGHT': 10, 'WEIGHT': 20, 'MEASURE': ['cm', 'kg'], 'FEATURE': 'barks'},
'DOG': {'HEIGHT': 10, 'WEIGHT': 20, 'MEASURE': ['cm', 'kg'], 'FEATURE': 'barks'}}
我的预期产出是:
{'COMMON': {'HEIGHT': 165, 'WEIGHT': 70, 'MEASURE': ['cm', 'kg']},
'MAN': 'handsome',
'WOMAN': {'FEATURE': 'pretty', 'WEIGHT': 50},
'DOG': {'FEATURE': 'barks', 'HEIGHT': 10, 'WEIGHT': 20}}
您可以执行类似操作,使用所需的键复制到其他
dict
:更新: 如果您不仅要更改级别1上的键,还应使用递归函数:
代码的问题是,如果值是字典,则重新分配} 解决此问题:
d1
。您可以使用^{代码:
输出:
或者,作为词典理解:
列表理解更快,因为它针对Python
interpreter
进行了优化,以便在looping
期间发现可预测的模式。除了list comprehensions
的语法优势外,它们通常与map
的等效用法一样快或更快输出>强>
相关问题 更多 >
编程相关推荐