我尝试处理字典中的键,但是当函数到达列表时,没有任何反应,我该如何解决这个问题?我究竟做错了什么?
此时我的函数返回:
{
'KEY1': 1,
'KEY2': 2,
'KEY3': {
'KEY4': {
'KEY5': [{
'key6': 3,
'key7': {
'key8': 4
}
}]
}
}
}
但是我的函数应该返回:
{
'KEY1': 1,
'KEY2': 2,
'KEY3': {
'KEY4': {
'KEY5': [{
'KEY6': 3,
'KEY7': {
'KEY8': 4
}
}]
}
}
}
obj = {
'key1': 1,
'key2': 2,
'key3': {
'key4': {
'key5': [{
'key6': 3,
'key7': {
'key8': 4
}
}]
}
}
}
def rec_keys(node, case = 'uppercase'):
output = {}
for key in node.keys():
if case == 'lowercase':
new_key = key.lower()
elif case == 'uppercase':
new_key = key.upper()
if isinstance(node[key], dict):
output[new_key] = rec_keys(node[key], case)
else:
output[new_key] = node[key]
return output
print(rec_keys(obj))
offtop:stackoverflow 要求我添加更多信息,但我没有什么可添加的
最佳答案
你可以使用类似的东西:
def change_keys(obj, func="upper"):
if func == "upper":
func = lambda x : x.upper()
elif func == "lower":
func = lambda x : x.lower()
if isinstance(obj, dict):
new = {}
for k, v in obj.items():
new[func(k)] = change_keys(v, func)
elif isinstance(obj, list):
new = []
for v in obj:
new.append(change_keys(v, func))
else:
return obj
return new
print(change_keys(obj, "upper"))
# {'KEY1': 1, 'KEY2': 2, 'KEY3': {'KEY4': {'KEY5': [{'KEY6': 3, 'KEY7': {'KEY8': 4}}]}}}
关于python - 我无法处理列表中的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60466240/