Python 从嵌套项目中筛选关键字

Python 从嵌套项目中筛选关键字

Python 可以通过过滤嵌套项目中的关键字来提取复杂数据结构中的特定值,这些数据结构包含嵌套字典或列表。关键字是嵌套项目中某个特定值的唯一标识符。根据这个问题描述,它在数据操作、数据交互和 API 交互等各个应用领域有各种应用。

语法

以下示例中使用了以下语法-

append()

这是Python中的一个内置方法,它将元素添加到列表的末尾。

isintance()

Python 有一个内置函数叫做 isinstance(),它可以确定一个对象是否是某个类或类型的实例或子类。

values()

values()是Python中的内置函数,用于从字典中获取每个值。

pop()

Python中的内置方法pop()用于移除或返回给定索引值。

使用递归与isinstance()

在以下示例中,程序使用递归,即函数调用自身,其中在函数内部使用内置函数isinstance()来检查对象类型,并通过返回函数来使用字典推导。

示例

def filter_keys_nested_item(data, keys):
    if isinstance(data, dict):
        return {k: filter_keys_nested_item(v, keys) for k, v in data.items() if k in keys}
    elif isinstance(data, list):
        return [filter_keys_nested_item(item, keys) for item in data]
    else:
        return data

# create the nested item
nested_item = {
    "key1": "value1",
    "key2": {
        "key3": "value3",
        "key4": "value4"
    },
    "key5": [
        {"key6": "value6"},
        {"key7": "value7"}
    ]
}
filtered_item = filter_keys_nested_item(nested_item, ["key2", "key4", "key6"])
print(filtered_item)

输出

{'key2': {'key4': 'value4'}}

使用堆栈

在下面的示例中,程序根据特定的键删除嵌套项。程序会调整嵌套的字典和列表,以便正确地遍历嵌套项。因此,它遍历字典的嵌套结构,检查每个键是否与给定的键匹配。如果找到匹配的键,则将相应的值添加到过滤后的输出中。最后,它将使用函数返回来过滤嵌套项并显示结果。

示例

def filter_keys_nested_item(data, keys):
    stack = [(data, {})]
    while stack:
        current, filtered = stack.pop()
        if isinstance(current, dict):
            for k, v in current.items():
                if k in keys:
                    filtered[k] = filter_keys_nested_item(v, keys)
                elif isinstance(v, (dict, list)):
                    stack.append((v, {}))
        elif isinstance(current, list):
            for item in current:
                stack.append((item, {}))
    return filtered

# create the nested item
nested_item = {
    "key1": "value1",
    "key2": {
        "key3": "value3",
        "key4": "value4"
    },
    "key5": [
        {"key6": "value6"},
        {"key7": "value7"}
    ]
}
filtered_item = filter_keys_nested_item(nested_item, ["key2", "key4", "key5"])
print(filtered_item)

输出

{'key2': {'key4': {}}, 'key5': {}}

使用递归生成器

在下面的示例中,程序使用了一个类似于列表推导的递归生成器,根据特定的键过滤嵌套的列表或字典。使用递归函数,它会提及特定的键来过滤嵌套项。如果找到匹配项,则允许对给定输入进行深层遍历,并生成相应的过滤输出。

示例

def filter_keys_nested_item(data, keys):
    if isinstance(data, dict):
        filtered = {k: filter_keys_nested_item(v, keys) for k, v in data.items() if k in keys}
    elif isinstance(data, list):
        filtered = [filter_keys_nested_item(item, keys) for item in data]
    else:
        return data

    if filtered:
        yield filtered

    for item in filtered.values() if isinstance(filtered, dict) else filtered:
        if isinstance(item, dict) or isinstance(item, list):
            yield from filter_keys_nested_item(item, keys)

# create the nested item
nested_item = {
    "key1": "value1",
    "key2": {
        "key3": "value3",
        "key4": "value4"
    },
    "key5": [
        {"key6": "value6"},
        {"key7": "value7"}
    ]
}
filtered_item = next(filter_keys_nested_item(nested_item, ["key2", "key4", "key6"]))
print(filtered_item)

输出

{'key2': <generator object filter_keys_nested_item at 0x7f29d0e4aab0>}

结论

我们讨论了解决问题陈述的各种方法。对于许多应用程序来说,包括数据处理、数据分析、API交互和配置解析,从嵌套对象中过滤键是必不可少的。它使我们能够解析API的响应,分析数据的子集,并根据配置参数修改应用程序的行为。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程