es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo eliminar datos anidados si se encuentra una clave específica en una gran estructura de datos JSON?

La forma más sencilla de filtrar es recorrerlos todos, pero créeme cuando digo que, como tengo datos muy masivos, recorrerlos puede consumir mucho tiempo y puede que no sea muy eficiente.

[
  {
    "from_name": "Haio",
    "from_id": 183556205,
    "receiver_name": "Shubh M",
    "targeted_id": 78545445,
    "gift_value": '$56'
  },
  {
    "from_name": "Mr. A",
    "from_id": 54545455,
    "receiver_name": "haio",
    "targeted_id": 78545445,
    "gift_value": '$7'
  }
]

¿Qué quiero lograr?

Solo quiero eliminar el diccionario si el targeted_id es el mismo.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    como from_id. Esto se puede lograr utilizando una comprensión de lista y filtrando los diccionarios no deseados en función de la condición dada. Aquí tienes un fragmento de código que realiza la tarea:

    data = [
      {
        "from_name": "Haio",
        "from_id": 183556205,
        "receiver_name": "Shubh M",
        "targeted_id": 78545445,
        "gift_value": '$56'
      },
      {
        "from_name": "Mr. A",
        "from_id": 54545455,
        "receiver_name": "haio",
        "targeted_id": 78545445,
        "gift_value": '$7'
      }]
    
    data_filtered = [d for d in data if d["targeted_id"] != d["from_id"]]
    
    print(data_filtered)
    

    Esto producirá la siguiente salida:

    [{'from_name': 'Haio', 'from_id': 183556205, 'receiver_name': 'Shubh M', 'targeted_id': 78545445, 'gift_value': '$56'}]
    

    Como puedes ver, se ha filtrado el segundo diccionario con "from_id": 54545455 y "targeted_id": 78545445.

Comments are closed.