我正在使用 Python 3.8.0
,我尝试编写一个函数来提取嵌套字典的所有键并将结果收集到列表中。这是一个例子:
mydict = {"k1":"v1", "k2":"v2", "k3":{"k4":"v4","k5":{"k6":{"k7":"v7","k8":"v8"}}}}
我期望的输出是:
[k1, k2, k3, k4, k5, k7, k8]
这是我定义的递归函数:
def extract_dict_keys(d):
if isinstance(d, dict):
result = []
for k, v in d.items():
if isinstance(v, dict):
result.append(k).extend(extract_dict_keys(v))
else:
result.append(k)
return result
else:
[None]
但是当我调用 extract_dict_keys(mydict)
时,我收到以下错误消息:
>>> extract_dict_keys(mydict)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 6, in extract_dict_keys
AttributeError: 'NoneType' object has no attribute 'extend'
>>>
你能指出我的误解吗?我没有看到问题。
最佳答案
result.append(k)
返回 None
它只将 k 添加到列表的末尾
要修复它,您可以将它分成两行
result.append(k)
result.extend(extract_dict_keys(v))
关于python - 尝试将字典键检索到列表中时获取 'NoneType' 对象没有属性 'extend' 错误消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61841581/