Cortar un diccionario en Python

Vaibhav Vaibhav 30 enero 2023
  1. Cortar un diccionario en Python usando la comprensión del diccionario
  2. Cortar un diccionario en Python usando la comprensión de listas
Cortar un diccionario en Python

Rebanar se refiere a obtener una parte del todo. En todos los lenguajes de programación como Python, C, C++, Java, JavaScript, etc., el rebanado se refiere a obtener una parte de una cadena o una lista. Una parte contigua de una cadena y una lista se conoce como subcadena y subarreglo. Una subsecuencia es una parte no contigua de una cadena o una lista.

El diccionario es una estructura de datos que contiene pares clave-valor. En un diccionario, una clave única hashable apunta a un valor. El valor puede ser cualquier cosa; un número entero, un número flotante, una lista, una tupla, un conjunto, un diccionario, etc. Los diccionarios generalmente se consideran mapas en otros lenguajes de programación, pero realizan la misma tarea.

Cortar un diccionario se refiere a obtener un subconjunto de pares clave-valor presentes dentro del diccionario. Generalmente, uno filtraría los valores de un diccionario usando una lista de claves requeridas. En este artículo, aprenderemos cómo dividir un diccionario usando Python con la ayuda de algunos ejemplos relevantes.

Cortar un diccionario en Python usando la comprensión del diccionario

Dado un diccionario no vacío con pares clave-valor y una lista de claves requeridas, podemos filtrar los pares clave-valor requeridos iterando sobre el diccionario y creando un diccionario nuevo. Durante la iteración, debemos asegurarnos de que las claves dentro de la lista sean válidas y se puedan encontrar dentro del diccionario. De lo contrario, el programa lanzará molestas excepciones. Consulte el siguiente código de Python para conocer el enfoque discutido.

import json

a = {
    "C": 1.1,
    "O": True,
    "M": "HelloWorld",
    "P": {"X": 1, "Y": 2, "Z": 3},
    "U": 25,
    "T": None,
    "E": ["Python", "Is", "Beautiful"],
    "R": [1, 2, 100, 200],
}
targets = ["C", "P", "U"]
result = {key: a[key] for key in a.keys() if key in targets}
print(json.dumps(result, indent=4))

Producción :

{
    "C": 1.1,
    "P": {
        "X": 1,
        "Y": 2,
        "Z": 3
    },
    "U": 25
}

La variable a contiene el diccionario, y la variable targets es una lista de todas las claves requeridas. Para crear un nuevo diccionario, iteramos sobre todas las claves del diccionario y verificamos si existe dentro de los targets. Si es así, lo agregamos a nuestro nuevo diccionario. De lo contrario, lo saltamos. Esta única línea de código realiza toda esta creación, filtrado y verificación.

result = {key: a[key] for key in a.keys() if key in targets}

Esta es una sintaxis en línea o una comprensión de diccionario para iterar sobre un objeto iterable y agregar declaraciones if y else para agregar más lógica y crear un nuevo objeto. Esta declaración puede parecer un poco compleja, pero por el contrario, es realmente fácil y muestra la belleza y el poder del lenguaje de programación Python.

Un código de Python equivalente más sencillo y más básico del código de Python anterior es el siguiente.

import json

a = {
    "C": 1.1,
    "O": True,
    "M": "HelloWorld",
    "P": {"X": 1, "Y": 2, "Z": 3},
    "U": 25,
    "T": None,
    "E": ["Python", "Is", "Beautiful"],
    "R": [1, 2, 100, 200],
}
targets = ["C", "P", "U"]
result = {}

for key in a.keys():
    if key in targets:
        result[key] = a[key]

print(json.dumps(result, indent=4))

Producción :

{
    "C": 1.1,
    "P": {
        "X": 1,
        "Y": 2,
        "Z": 3
    },
    "U": 25
}

Cortar un diccionario en Python usando la comprensión de listas

Los pares clave-valor almacenados dentro de un diccionario se pueden obtener en forma de lista de listas. Dada una lista de objetivos, podemos iterar sobre esta lista de listas y filtrar la clave que no existe dentro de la lista de objetivos. Además, podemos crear un nuevo diccionario usando la lista filtrada de listas. Consulte el siguiente código de Python para el enfoque anterior.

import json

a = {
    "C": 1.1,
    "O": True,
    "M": "HelloWorld",
    "P": {"X": 1, "Y": 2, "Z": 3},
    "U": 25,
    "T": None,
    "E": ["Python", "Is", "Beautiful"],
    "R": [1, 2, 100, 200],
}
targets = ["C", "P", "U"]
result = {}
pairs = a.items()

for (key, value) in pairs:
    if key in targets:
        result[key] = value

print(json.dumps(result, indent=4))

Producción :

{
    "C": 1.1,
    "P": {
        "X": 1,
        "Y": 2,
        "Z": 3
    },
    "U": 25
}

El método items() devuelve un objeto iterable que contiene pares clave-valor dentro de una lista. Para el diccionario anterior, la variable pares se ve de la siguiente manera.

dict_items(
    [
        ("C", 1.1),
        ("O", True),
        ("M", "HelloWorld"),
        ("P", {"X": 1, "Y": 2, "Z": 3}),
        ("U", 25),
        ("T", None),
        ("E", ["Python", "Is", "Beautiful"]),
        ("R", [1, 2, 100, 200]),
    ]
)

Con un bucle for, los valores dentro de la variable pairs se desempaquetan y filtran con la ayuda de una declaración if. Los valores filtrados se añaden al nuevo diccionario de resultados.

Todos los ejemplos discutidos anteriormente usan el módulo json para imprimir la salida del diccionario a la perfección. Tenga en cuenta que el módulo json no tiene nada que ver con la lógica real para dividir un diccionario, y es completamente opcional usar este módulo.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Artículo relacionado - Python Dictionary