我试图遍历字典并大写所有键(如果它们是字符串)。我为此遇到运行时错误:
for k, v in ref_dict.items():
if isinstance(k, str):
ref_dict[k.upper()] = v
else:
ref_dict[k] = v
如何避免这样的事情?或者,更好的是,如何改进代码以更优雅地解决此问题?
答案 0 :(得分:1)
您的词典有多大?如果不是很大,那么您可以这样做:
new_dict = {}
for k, v in ref_dict.items():
if isinstance(k, str):
new_dict[k.upper()] = v
else:
new_dict[k] = v
ref_dict = new_dict
在另一种情况下,您可能需要检查ref_dict
的创建并在那里修改密钥。
此外,可以按照以下更改ref_dict
来修改原始代码。但是值得一提的是,它将为ref_dict
添加新元素。例如
ref_dict = {'abc' : 1}
### change of code
keys = [k for key in ref_dict]
for k in keys:
if isinstance(k, str):
ref_dict[k.upper()] = ref_dict[k]
# else part is not neccessary
# else:
# ref_dict[k] = v
# now ref_dict = {'abc':1, 'ABC':1}
答案 1 :(得分:0)
我通过以下方法解决了该问题:
final_dict = dict((str(k).upper(), v) for k, v in ref_dict.items())
return final_dict
str
应用程序不是理想的,但是现在可以使用。