在处理嵌套结构时,如何将一个嵌套字典扁平化?假设有一个包含多层嵌套的字典,每一层嵌套都有多个键值对。你需要设计一个方案,将所有嵌套的键合并为一个以点号 . 分隔的单一键,使最终结果为一个“扁平化”的字典。
每个嵌套字典的键要按照路径用 . 连接在一起。
处理多层嵌套的情况,确保所有嵌套的键值对都被转换为扁平化结构。
字典的值可以是整数、字符串或其他字典,非字典值直接作为最终结果中的键值对。
在处理嵌套结构时,如何将一个嵌套字典扁平化?假设有一个包含多层嵌套的字典,每一层嵌套都有多个键值对。你需要设计一个方案,将所有嵌套的键合并为一个以点号 . 分隔的单一键,使最终结果为一个“扁平化”的字典。
每个嵌套字典的键要按照路径用 . 连接在一起。
处理多层嵌套的情况,确保所有嵌套的键值对都被转换为扁平化结构。
字典的值可以是整数、字符串或其他字典,非字典值直接作为最终结果中的键值对。
以下回复参考:皆我百晓生、券券喵儿等免费微信小程序作答:
为了实现这个功能,我们可以编写一个Python函数,它接受一个嵌套字典作为输入,并返回一个扁平化的版本。我们将使用递归方法来遍历整个字典,然后根据其键构建一个新的扁平化字典。
def flatten_dict(d, parent_key='', sep='.'):
items = []
for k, v in d.items():
new_key = f"{parent_key}{sep}{k}" if parent_key else k
if isinstance(v, dict):
items.extend(flatten_dict(v, new_key, sep=sep).items())
else:
items.append((new_key, v))
return dict(items)
# 示例使用
nested_dict = {
"a": 1,
"b": {"c": 2, "d": {"e": 3}},
"f": [{"g": 4}, {"h": 5}]
}
flat_dict = flatten_dict(nested_dict)
print(flat_dict) # 输出: {'a': 1, 'b.c': 2, 'b.d.e': 3, 'f.0.g': 4, 'f.1.h': 5}
在这个解决方案中:
flatten_dict 函数接收两个参数:一个字典(d)和一个可选的 parent_key 和 sep 参数。items() 方法获取字典的所有键值对。parent_key 和当前键组成。这种方法能够正确处理任意深度的嵌套字典,并且输出的是一个按路径连接的键值对的扁平化字典。