CursosEmpresasBlogLiveConfPrecios

Proyecto: filtrando datos

Clase 12 de 21 • Curso de Python Intermedio: Comprehensions, Lambdas y Manejo de Errores

Clase anteriorSiguiente clase

Contenido del curso

Preparación antes de empezar

  • 1
    Algunas cosas que aprenderás sobre Python en este curso

    Algunas cosas que aprenderás sobre Python en este curso

    01:36 min
  • 2
    El Zen de Python

    El Zen de Python

    08:30 min
  • 3
    ¿Qué es la documentación?

    ¿Qué es la documentación?

    04:33 min

Entorno virtual

  • 4
    ¿Qué es un entorno virtual?

    ¿Qué es un entorno virtual?

    03:56 min
  • 5
    El primer paso profesional: creación de un entorno virtual

    El primer paso profesional: creación de un entorno virtual

    08:30 min
  • 6
    Instalación de dependencias con pip

    Instalación de dependencias con pip

    09:53 min

Alternativa a los ciclos: comprehensions

  • 7
    Listas y diccionarios anidados

    Listas y diccionarios anidados

    12:32 min
  • 8
    List comprehensions

    List comprehensions

    07:39 min
  • 9
    Dictionary comprehensions

    Dictionary comprehensions

    06:00 min

Conceptos avanzados de funciones

  • 10
    Funciones anónimas: lambda

    Funciones anónimas: lambda

    05:42 min
  • 11
    High order functions: filter, map y reduce

    High order functions: filter, map y reduce

    10:40 min
  • 12
    Proyecto: filtrando datos

    Proyecto: filtrando datos

    Viendo ahora

Manejo de errores

  • 13
    Los errores en el código

    Los errores en el código

    08:54 min
  • 14
    Debugging

    Debugging

    12:27 min
  • 15
    Manejo de excepciones

    Manejo de excepciones

    10:53 min
  • 16
    Poniendo a prueba el manejo de excepciones

    Poniendo a prueba el manejo de excepciones

    04:12 min
  • 17
    Assert statements

    Assert statements

    07:55 min

Manejo de archivos

  • 18
    ¿Cómo trabajar con archivos?

    ¿Cómo trabajar con archivos?

    06:52 min
  • 19
    Trabajando con archivos de texto en Python

    Trabajando con archivos de texto en Python

    12:27 min

Conclusión

  • 20
    Reto final: Juego del Ahorcado o Hangman Game

    Reto final: Juego del Ahorcado o Hangman Game

    03:43 min
  • 21
    Continúa tu camino profesional con Python

    Continúa tu camino profesional con Python

    02:17 min
Tomar examen

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads
        Royer Guerrero Pinilla

        Royer Guerrero Pinilla

        student•
        hace 5 años

        Data ⬇⬇⬇

        DATA = [ { 'name': 'Facundo', 'age': 72, 'organization': 'Platzi', 'position': 'Technical Coach', 'language': 'python', }, { 'name': 'Luisana', 'age': 33, 'organization': 'Globant', 'position': 'UX Designer', 'language': 'javascript', }, { 'name': 'Héctor', 'age': 19, 'organization': 'Platzi', 'position': 'Associate', 'language': 'ruby', }, { 'name': 'Gabriel', 'age': 20, 'organization': 'Platzi', 'position': 'Associate', 'language': 'javascript', }, { 'name': 'Isabella', 'age': 30, 'organization': 'Platzi', 'position': 'QA Manager', 'language': 'java', }, { 'name': 'Karo', 'age': 23, 'organization': 'Everis', 'position': 'Backend Developer', 'language': 'python', }, { 'name': 'Ariel', 'age': 32, 'organization': 'Rappi', 'position': 'Support', 'language': '', }, { 'name': 'Juan', 'age': 17, 'organization': '', 'position': 'Student', 'language': 'go', }, { 'name': 'Pablo', 'age': 32, 'organization': 'Master', 'position': 'Human Resources Manager', 'language': 'python', }, { 'name': 'Lorena', 'age': 56, 'organization': 'Python Organization', 'position': 'Language Maker', 'language': 'python', }, ]
          Luis Ruiz Ramos

          Luis Ruiz Ramos

          student•
          hace 5 años

          Grandeeee

          Juan Ochoa

          Juan Ochoa

          student•
          hace 5 años

          Gracias!!

        Luis Arturo Cruz Cruz

        Luis Arturo Cruz Cruz

        student•
        hace 5 años

        Hola,

        Les comparto una alternativa al operador | para versiones de Python mayores a 3.5 pero menores a 3.9

        old_people = list(map(lambda worker: {**worker, **{"old": worker["age"] > 70}}, DATA))

        Fuente

          Harold Yesid Calderon Vega

          Harold Yesid Calderon Vega

          student•
          hace 5 años

          Buen aporte, gracias.

          Eber Laurente Lliuyacc

          Eber Laurente Lliuyacc

          student•
          hace 5 años

          Buen aporte. Me sirvió para resolver el reto🤘

        Josue Farley Lopez Carvajal

        Josue Farley Lopez Carvajal

        student•
        hace 5 años

        Un tip: Pueden colocar DATA en un archivo aparte y luego importarlo en el archivo donde van a trabajar:

        from data_filtering_db import DATA
          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Más limpio el código.

          Mauricio Gonzalez Falcon

          Mauricio Gonzalez Falcon

          student•
          hace 4 años

          Eso hice! Gracias por el tip :D

        David Eduardo Bueno Núñez

        David Eduardo Bueno Núñez

        student•
        hace 5 años
        #Con list comprehensions adults = [worker ['name'] for worker in DATA if worker ['age'] > 18] old_people = [{**worker, **{'old': worker['age'] > 70}} for worker in DATA] #Con high order functions all_python_devs = list(filter(lambda worker: worker['language'] == 'python', DATA)) all_python_devs = list(map(lambda worker: worker['name'], all_python_devs)) all_platzi_workers = list(filter(lambda worker: worker['organization'] == 'Platzi', DATA)) all_platzi_workers = list(map(lambda worker: worker['name'], all_platzi_workers))
          Juan Sebastian Mesa

          Juan Sebastian Mesa

          student•
          hace 5 años

          Podrías explicarnos el código que usaste para old_people? hasta ahora eres el único que arrojó como resultado los diccionarios con la llave adicional (que es lo que el reto planteaba)

          David Eduardo Bueno Núñez

          David Eduardo Bueno Núñez

          student•
          hace 5 años

          Es sencillo, más bien lo que se tiene que entender es como agregar una nueva key a un diccionario.

          En mi caso tengo python 3.8.3, por lo que utilicé la sintaxis z = {**x, **y} --> para sumar diccionarios o agregar una nueva key.

          {**worker, **{'old': worker['age'] > 70}} for worker in DATA
          • Leeyendo esta linea de código sería algo así:

          Para el diccionario worker en DATA, voy a guardar en ese mismo diccionario una nueva key llamada old que regrese un True si la key age es mayor a 70, y que regrese un False si es menor a 70.

          • Si tienes Python 3.9 tendrás que utilizar esta sintaxis: z = x | y
        Jhonfred Galarraga

        Jhonfred Galarraga

        student•
        hace 5 años

        Reto completado:

        def main(): all_python_devs = list(filter(lambda worker: worker['language'] == 'python', DATA)) all_python_devs = list(map(lambda worker: worker['name'], all_python_devs)) all_platzi_workers = list(filter(lambda worker: worker['organization'] == 'Platzi', DATA)) all_platzi_workers = list(map(lambda worker: worker['name'], all_platzi_workers)) adults = [worker['name'] for worker in DATA if worker['age'] > 18] old_confirmation = lambda worker_age: worker_age > 70 old_people = [worker | {'old': old_confirmation(worker['age'])} for worker in DATA] for worker in old_people: print(worker) if __name__ == '__main__': main()
          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Que bien !

          Diana Erika Garrammone

          Diana Erika Garrammone

          student•
          hace 4 años

          Muy bueno, gracias!

        Eduardo Gutiérrez Contreras

        Eduardo Gutiérrez Contreras

        student•
        hace 4 años

        Uso Ubuntu 20.04 y me daba este error: TypeError: unsupported operand type(s) for |: 'dict' and 'dict' Y pues resulta que yo empecé acá macho alfa pelo en pecho todo empoderado haciendo el curso con mi instalación por default de Python en Ubuntu 20.04 (Xubuntu, para ser más preciso). Pero ¡oh sorpresa! Ubuntu 20.04 utiliza Python 3.8 y ni se te ocurra actualizarlo a 3.9 porque podrías romper algunos programas de Ubuntu. ¿Solución? Virtual Environments. Y pues sí que se puede instalar Python 3.9 en Ubuntu 20.04, sólo que el intérprete se llama python3.9 en lugar de python3 (esto para no romper los paquetes que ya funcionan en Ubuntu hechos para la versión 3.8). Para no tener que escribir Python3.9 cada vez que ejecutemos nuestro código vamos a crear un entorno virtual con el nuevo intérprete, una vez instalado. Para instalarlo usamos:

        sudo apt install python3.9 python3.9-venv

        Ya con ello nos vamos a la carpeta en la que vamos a trabajar, inicializamos git si acaso no lo hemos hecho y si no hemos iniciado ++antes++ un venv podemos iniciarlo justo como Facundo nos enseñó, pero usando el intérprete de Python 3.9:

        python3.9 -m venv venv

        Peeero si estás como yo, que hizo todo desde antes con la versión 3.8, seguro ya tienes un directorio venv que creaste usando Python 3.8. Yo decidí renombrarlo para no tener problemas y poder seguir usando el alias que ya hicimos clases atrás (o también puedes eliminarlo para no tener que después agregar venv3.8 lo a tu .gitignore):

        mv venv venv3.8

        y ahora sí, a crear tu venv pero con el intérprete python3.9

        python3.9 -m venv venv

        actívalo usando el alias que hicimos en clases anteriores y listo:

        avenv

        Ya dentro del entorno virtual dale python3 -V y te debe de dar que estás usando la versión 3.9 (ojo la V es mayúscula)

        (venv) $ python3 -V Python 3.9.5

        La parte más difícil de todo esto es que, partir de ahora, cada vez que crees tu entorno virtual, ++no debes olvidar++ usar python3.9 ... Ya por último, si utilizas el botoncito de "play" de Visual Studio Code para correr tus scripts de python (yo así soy de flojo), debes de cambiar el intérprete por default. En VS Code, presiona Ctrl+Shift+P y busca Preferences: Open User Settings Ya estando ahí ahora busca python: default interpreter. Te debe de salir la ruta que es /bin/python3, simplemente cámbiala a /bin/python3.9 y listo.

        ¡Felices sesiones maratónicas de programación!

          Consuelo Castañeda Lopez

          Consuelo Castañeda Lopez

          student•
          hace 4 años

          me salia el mismo error y mi solución fue hacerlo en windows jajaajajaja perdón me estrese :(

          Mauricio Gonzalez Falcon

          Mauricio Gonzalez Falcon

          student•
          hace 4 años

          Gracias por tu aporte jaja, yo lo único que hago es escribir en ubuntu:

          python3.9 archivo.py

          Y me funciona todo normal

        Jesús Kaimorts Díaz Medina

        Jesús Kaimorts Díaz Medina

        student•
        hace 5 años

        Proyecto de Filtrar datos

        La forma en como he entendido mejor map y filter es conociendo que a cada una se le pasa una funcion especial. En otros lenguajes, como Java, cuando se utiliza la funcion Filter() se le debe de pasar un Predicate, y cuando se utiliza un Map() otra funcion como: UnaryOperator, Function, etc.

        • Predicate: Es una funcion que toma un parametro y el resultado de una comparacion.

        La idea queda mas clara cuando guardo ese Predicate en una variable, usando la lambda, y otra lambda para usar mi funcion de mapeo.

        1. Version con List Comprehension:
        # Usando 'List Comprehension' all_python_devs = [worker["name"] for worker in DATA if worker["language"] == "python"] label_python = "use Python - with List Comprehension" show_workers(all_python_devs, label_python)
        1. Version con High Order Function:
        # Usando 'High Order Function' Predicate = lambda worker : worker["language"] == "python" all_python_devs = list(filter(Predicate, DATA)) MapFunc = lambda worker : worker["name"] all_python_devs = list(map(MapFunc, all_python_devs)) label_python = "use Python - with High Order Functions" show_workers(all_python_devs, label_python)

        Ademas, he implementado una funcion show_workers(), para mostrar el contenido de dicha transformacion: Filtrado y mapeo:

        def show_workers(workers, label=""): print("People who", label) for i, worker in enumerate(workers): print(f"\t{(i+1)}. {worker}")

        A continuacion comparto las distintas tareas pedidas para el proyecto:

        1. Trabajadores que laboran en Platzi

          • Version con 'List Comprehension'
            all_platzi_workers = [worker["name"] for worker in DATA if worker["organization"] == "Platzi"] label_platzi = "work at Platzi - with List Comprehension" show_workers(all_platzi_workers, label_platzi)
          • Version con 'High Order Function'
            # Usando 'High Order Function' Predicate = lambda worker : worker["organization"] == "Platzi" all_platzi_workers = list(filter(Predicate, DATA)) MapFunc = lambda worker : worker["name"] all_platzi_workers = list(map(MapFunc, all_platzi_workers)) label_python = "work at Platzi - with High Order Functions" show_workers(all_platzi_workers, label_python)
        2. Agregar la llave old a un nuevo diccionario

          • Version con 'List Comprehension'
            all_platzi_workers = [worker["name"] for worker in DATA if worker["organization"] == "Platzi"] label_platzi = "work at Platzi - with List Comprehension" show_workers(all_platzi_workers, label_platzi)
          • Version con 'High Order Function'
            #MapFunc = lambda worker : worker | {"old": worker["age"] > 70} MapFunc = lambda worker : {**worker, **{"old": worker["age"] > 70}} old_people = list(map(MapFunc, DATA)) label_old = "is old - with High Order Functions" show_workers(old_people, label_old)

        Explicacion de la llave old

        Lo que en realidad hace la siguiente linea de codigo:

        {**worker, **{"old": worker["age"] > 70}}

        Es incrustar, pegar, agregar, la llave old en el diccionaro, pero como?:

        1. Obtenemos el diccionario, y todos sus campos en el usando {**worker}:
        {'name': 'Facundo', 'age': 72, 'organization': 'Platzi', 'position': 'Technical Coach', 'language': 'python'}
        1. Obtenemos un diccionario con los campos old y su valor correspondiente, segun la condicion establecida: {**{"old": worker["age"] > 70}}
        {'old': True}

        Como podemos ver, la edad de Facundo es 72 anios, por esa razon su valor es True

        1. Finalmente, agregamos llave old en el diccionario de worker: {**worker, **{"old": worker["age"] > 70}}
        {'name': 'Facundo', 'age': 72, 'organization': 'Platzi', 'position': 'Technical Coach', 'language': 'python', 'old': True}
        Daniel Eduardo Sosa Martin

        Daniel Eduardo Sosa Martin

        student•
        hace 5 años
        def run(): all_python_devs = list(filter(lambda worker: worker["language"] == "python", DATA )) all_python_devs = list(map(lambda worker: worker["name"], all_python_devs)) all_platzi_workers = list(filter(lambda worker: worker["organization"] == "Platzi", DATA )) all_platzi_workers = list(map(lambda worker: worker["name"], all_platzi_workers)) adults = [worker["name"] for worker in DATA if worker["age"] > 18] oll_people = [worker | {"oll": worker["age"] > 70} for worker in DATA] for worker in oll_people: print(worker) if __name__ == "__main__": run()
          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Buen código.

          fidel angel ochoa

          fidel angel ochoa

          student•
          hace 5 años

          entonces este es una excepcion del uso del "if" en "list comprehension"? a lo que entiendo el "if" va dentro de la parte donde especificamos que agregaremos al nuevo diccionario, ¿Porque es esto?

        Andres Felipe Ramirez

        Andres Felipe Ramirez

        student•
        hace 5 años

        en consumo de recursos qué es más eficiente, comprehensions o high order functions?

          Omar Daniel Centeno

          Omar Daniel Centeno

          student•
          hace 5 años

          ¡Hola!

          List Comprehensions gana, ya que ejecuta el ciclo de forma directa, sin tener que llamar a una función. También es más sencilla de leer que las funciones de orden superior.

          Sin embargo, List Comprehensions siempre regresa un iterable y en caso de necesitar como resultado un número único debemos utilizar high order fuctions como reduce().

          Andres Camacho

          Andres Camacho

          student•
          hace 4 años

          En grandes cantidades de datos, List Comprehensions puede tener problemas por como utiliza la memoria. Más información por acá

        Royer Guerrero Pinilla

        Royer Guerrero Pinilla

        student•
        hace 5 años

        Map es util cuando quiero filtar un dato de algo es lo mas parecido al list comprehension sin condicional Filter es util cuando quiero usar un operador logico para filtar los datos

          Josue Farley Lopez Carvajal

          Josue Farley Lopez Carvajal

          student•
          hace 5 años

          map no es un filtro, lo que hace es generar una nueva lista que contiene el resultado de aplicar una función a cada elemento de la lista original. Es fácil confundirse cuando la función aplicada extrae datos del elemento original en lugar de transformarlo.

        Cesar Elías Armendariz Ruano

        Cesar Elías Armendariz Ruano

        student•
        hace 5 años

        Código en pares:

        all_python_devs

        all_python_devs = [worker["name"] for worker in DATA if worker['language'] == 'python'] all_python_devs = list( filter(lambda worker: worker['language'] == 'python', DATA)) all_python_devs = list(map(lambda worker: worker['name'], all_python_devs))

        all_platzy_workers

        all_platzy_workers = [worker['name'] for worker in DATA if worker['organization'] == 'Platzi'] all_platzy_workers = list( filter(lambda worker: worker['organization'] == 'Platzi', DATA)) all_platzy_workers = list( map(lambda worker: worker['name'], all_platzy_workers))

        adults

        adults = list(filter(lambda worker: worker['age'] >= 18, DATA)) adults = list(map(lambda worker: worker['name'], adults)) adults = [worker['name'] for worker in DATA if worker['age'] >= 18]

        old_people

        old_people = list(map(lambda worker: worker | { 'old': worker['age'] > 70}, DATA)) old_people = [{**worker, **{'old': worker['age'] > 70}} for worker in DATA]

        para recorrer cualquier variable

        for worker in old_people: print(worker)
          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Gracias.

          Harold Giovanny Uribe Romero

          Harold Giovanny Uribe Romero

          student•
          hace 4 años

          Que significa los asteriscos en la última sentencia del old_people?

        Ivan Dario Uribe Gonzalez

        Ivan Dario Uribe Gonzalez

        student•
        hace 5 años

        ¿Es posible contar la cantidad de elementos que cumplen con cierta función? ¿Cómo se haría?

          Matthias Ignacio Clein Espinoza

          Matthias Ignacio Clein Espinoza

          student•
          hace 5 años

          Puede que te sirva la función len()

          print(len(DATA)) #10 adults = list(filter(lambda worker: worker["age"] > 18 , DATA)) print(len(adults)) #9

          Saludos!

        Manuel Espitia

        Manuel Espitia

        student•
        hace 5 años

        Hola! Alguien sabe cómo se hace el old_people con list comprehensions? No sé cómo se hace, he visto algunas soluciones usando ** pero no sé qué significa y tampoco me funcionó. Agradezco si alguien me ayuda.

        Reto_clase13.PNG

          Jhonfred Galarraga

          Jhonfred Galarraga

          student•
          hace 5 años

          Esta fue mi solución al problema.

          old_confirmation = lambda worker_age: worker_age > 70 old_people = [worker | {'old': old_confirmation(worker['age'])} for worker in DATA]

          Utilice una función lambda para realizar la confirmación y el operador | para sumarle el nuevo diccionario. Si no entiendes como funciona comentamelo.

          Manuel Espitia

          Manuel Espitia

          student•
          hace 5 años

          Ahí te devuelve un item nuevo con llave "old" y valor "edad" si es mayor de 70, cierto? Sabes cómo se haría para que devuelva verdadero o falso? Gracias por tu aporte, creo está interesante.

        Alfonso Neil Jiménez Casallas

        Alfonso Neil Jiménez Casallas

        student•
        hace 4 años

        Uso del operador | (pipe) para unir diccionarios en Python

        Danilo Huamani Zapata

        Danilo Huamani Zapata

        student•
        hace 4 años

        RETO HIGH ORDER FUNCTION "all_python_devs"

        all_python_devs = list(filter(lambda worker: worker["language"] == "python", DATA)) all_python_devs = list(map(lambda worker: worker["name"], all_python_devs)) print("Reto High Order Function all_python_devs") for worker in all_python_devs: print(worker)

        RETO HIGH ORDER FUNCTION "all_Platzi_workers"

        all_Platzi_workers = list(filter(lambda worker: worker["organization"] == "Platzi", DATA)) all_Platzi_workers = list(map(lambda worker: worker["name"], all_Platzi_workers)) print("Reto High Order Function all_platzi_workers") for worker in all_Platzi_workers: print(worker)

        RETO LIST COMPREHENSIONS - ADULTS

        adults = [worker["name"] for worker in DATA if worker["age"] > 18] print("Reto list comprehension Adults") for worker in adults: print(worker)

        RETO LIST COMPREHENSIONS - OLD PEOPLE

        old_people = [worker | {"old": worker["age"] > 70} for worker in DATA] print("Reto list comprehension Old_people") for worker in old_people: print(worker)
          Anderson Eduardo Arévalo Ramírez

          Anderson Eduardo Arévalo Ramírez

          student•
          hace 3 años

          Muy parecido a como mi bro lo planteo, nice

        Diego Armando Henao Rodríguez

        Diego Armando Henao Rodríguez

        student•
        hace 5 años

        Hola compañeros una ayuda por favor, porque me sale el siguiente error:

        TypeError: unsupported operand type(s) for |: 'dict' and 'dict'

        Mi código es el siguiente:

        def run(): all_python_devs = [worker["name"] for worker in DATA if worker["language"] == "python"] adults = list(filter(lambda worker: worker["age"] > 18, DATA)) adults = list(map(lambda worker: worker["name"], adults))

        # Agregar un diccionario al diccionario exitente con pipe | old_people = list(map(lambda worker: worker | {"old": worker["age"] > 70}, DATA)) for worker in all_python_devs: print(worker) for worker in adults: print(worker) for worker in old_people: print(worker)

        if name == 'main': run()

          Jacobo Ceballos

          Jacobo Ceballos

          student•
          hace 5 años

          El error lo está mostrando con el simbolo " | ", verdad? Facundo dijo en la clase que es un operador implementado en la versión de Python 3.9. Tal vez verificando la versión pueda solucionar el problema.

          Diego Armando Henao Rodríguez

          Diego Armando Henao Rodríguez

          student•
          hace 5 años

          Si, el problema es con el operador " | ", tengo actualmente la versión 3.8.5, entonces para versiones anteriores a 3.9, cómo se haría la adición al diccionario o no se podría?

        Christian Alvarenga

        Christian Alvarenga

        student•
        hace 5 años

        En la parte del primer high order function, en vez de poner solo print (worker) se puede poner print (worker ['name']) y con eso te tira solo los nombres de los mayores de edad.

          Darwin Andres Benavides Miranda

          Darwin Andres Benavides Miranda

          student•
          hace 5 años

          Esta idea que propones en efecto imprime los nombres de los mayores de edad, pero ojo el diccionario resultante y guardado sí que contiene todos los campos, entonces hay que tener en cuenta si ese era el resultado final que esperabas.

          Christian Alvarenga

          Christian Alvarenga

          student•
          hace 5 años

          Buen punto, gracias. :)

        Fabricio Escalante Pérez

        Fabricio Escalante Pérez

        student•
        hace 5 años
        def challenge(): all_python_devs = list(map(lambda worker: worker['name'], list(filter(lambda worker: worker['language'] == 'python', DATA)))) all_platzi_workers = list(map(lambda worker: worker['name'], list(filter(lambda worker: worker['organization'] == 'Platzi', DATA)))) adults = [worker['name'] for worker in DATA if worker['age'] > 18] old_people = [{**worker, **{'old': worker['age'] > 70}} for worker in DATA]
          Moisés Manuel Morín Hevia

          Moisés Manuel Morín Hevia

          student•
          hace 5 años

          Buen aporte.

        Santiago Valencia Valencia

        Santiago Valencia Valencia

        student•
        hace 5 años
        Reto_chapter13.png
        Usuario anónimo

        Usuario anónimo

        user•
        hace 5 años

        👾 Completando la solución del filtrado de datos, usando filter, map y list comprehensions.

        DATA = [ { 'name': 'Facundo', 'age': 72, 'organization': 'Platzi', 'position': 'Technical Coach', 'language': 'python', }, { 'name': 'Luisana', 'age': 33, 'organization': 'Globant', 'position': 'UX Designer', 'language': 'javascript', }, { 'name': 'Héctor', 'age': 19, 'organization': 'Platzi', 'position': 'Associate', 'language': 'ruby', }, { 'name': 'Gabriel', 'age': 20, 'organization': 'Platzi', 'position': 'Associate', 'language': 'javascript', }, { 'name': 'Isabella', 'age': 30, 'organization': 'Platzi', 'position': 'QA Manager', 'language': 'java', }, { 'name': 'Karo', 'age': 23, 'organization': 'Everis', 'position': 'Backend Developer', 'language': 'python', }, { 'name': 'Ariel', 'age': 32, 'organization': 'Rappi', 'position': 'Support', 'language': '', }, { 'name': 'Juan', 'age': 17, 'organization': '', 'position': 'Student', 'language': 'go', }, { 'name': 'Pablo', 'age': 32, 'organization': 'Master', 'position': 'Human Resources Manager', 'language': 'python', }, { 'name': 'Lorena', 'age': 56, 'organization': 'Python Organization', 'position': 'Language Maker', 'language': 'python', }, ] def run(): all_python_devs = list(filter(lambda worker: worker["language"] == "python", DATA)) all_python_devs = list(map(lambda worker: worker["name"], all_python_devs)) all_Platzi_workers = list(filter(lambda worker: worker["organization"] == "Platzi", DATA)) all_Platzi_workers = list(map(lambda worker: worker["name"], all_Platzi_workers)) old_people = list(filter(lambda worker: worker["age"] > 50, DATA)) old_people = list(map(lambda worker: worker["name"], old_people)) adults = list(filter(lambda worker: worker["age"] > 18, DATA)) adults = list(map(lambda worker: worker["name"], adults)) print("- Python Developers -") for worker in all_python_devs: print(worker) print("\n- Platzi Workers -") for worker in all_Platzi_workers: print(worker) print("\n- Holds -") for people in old_people: print(people) print("\n- Adults -") for adult in adults: print(adult) if __name__ == '__main__': run()