Cómo comprobar en Python si una lista, tupla, cadena, diccionario o conjunto están vacíos

Como comprobar en python que una estructura de datos está vacía
Share on facebook
Share on twitter
Share on linkedin

Hoy quiero mostrarte lo simple y sencillo que es Python para algunas cosas rutinarias (yo diría que para casi todo). Tanto que a veces cuesta creer que la solución sea esa, la que estabas pensando pero no te atreviste a probar porque era tan obvia que no hubieras creído que fuera posible. La situación que planteo es cómo comprobar en python que una lista, tupla, cadena, diccionario o conjunto están vacíos.

Muchas veces lo más simple es lo mejor

Si venimos de otros lenguajes de programación, este tipo de comprobaciones formarán parte de nuestra librería de cosas comunes.

Por ejemplo, en JAVA, para comprobar si una cadena no está vacía podemos encontrarnos con cosas como:

if(str != null && !str.isEmpty())

E incluso:

if(str != null && !str.trim().isEmpty())

Siguiendo con el lenguaje JAVA, si queremos saber si una lista (por ejemplo ArrayList) contiene elementos, podemos encontrarnos otras dos formas de hacerlo:

if (list.size() == 0) {
  // Lista vacía
}

O también:

if (list.isEmpty()) {
  // Lista vacía
}

Pero en Python es mucho más simple. Dado que en Python las listas, tuplas, diccionarios, cadenas o conjuntos vacíos se evalúan como False , la forma de comprobar como un auténtico pythonista 🐍 si una estructura de datos está vacía es la siguiente:

if list:
  # No vacía
else:
  # Vacía

if dict:
  # No vacío
else:
  # Vacío

Por tanto, si una estructura de datos está vacía, devuelve «False» cuando es usada en un contexto booleano. Por el contrario, si contiene elementos, devuelve «True» al tratarla en un contexto booleano.

Veámoslo con un ejemplo:

Vamos a definir una función para comprobar si una estructura de datos está vacía:

def is_empty(data_structure):
    if data_structure:
        print("No está vacía")
        return False
    else:
        print("Está vacía")
        return True

Ahora vamos a inicializar unas estructuras de datos vacías y vamos a comprobar su estado:

>>>d = {}
>>>t = ()
>>>l = []
>>>str = ''
>>>s = set()

>>>is_empty(d)
Está vacía
>>>is_empty(t)
Está vacía
>>>is_empty(l)
Está vacía
>>>is_empty(str)
Está vacía
>>>is_empty(s)
Está vacía

A continuación, añadimos un elemento a cada una de las estructuras anteriores y hacemos la misma comprobación:

>>>d['a'] = 1
>>>t = tuple('a')
>>>l.append('a')
>>>str = 'a'
>>>s.add('a')

>>>is_empty(d)
No está vacía
>>>is_empty(t)
No está vacía
>>>is_empty(l)
No está vacía
>>>is_empty(str)
No está vacía
>>>is_empty(s)
No está vacía

Como podemos comprobar, al evaluar en un contexto booleano cada una de las estructuras de datos vemos que no están vacías.

Cuidado con los None

‼️Hay que tener en cuenta que esta forma de comprobar si una estructura de datos (ya sea una lista, diccionario, cadena…) está vacía, también devolverá False si su valor es None.

Además, las claves «vacías» que tienen valores en los diccionarios también serán evaluadas como «no vacías«. Véamoslo:

>>> empty_key = {None: 'Hola'}
>>> is_empty(empty_key)
No está vacía
False

Evita la forma no «pythonica»

Sí, seguro que te lo has preguntado o lo has pensado. ¿Por qué no hago uso de la función len?
Puedes hacerlo y no está mal, simplemente no es la forma pythonica preferida por la comunidad.

if len(dict) == 0:
  ...


if len(dict.keys()) == 0:
  ...

Imagen de la cabecera creada por freepik – www.freepik.es

¿Me ayudas a compartir el post? 🤗🤟🏻

Share on facebook
Facebook
Share on twitter
Twitter
Share on linkedin
LinkedIn

También te puede interesar

* Te informo de que los datos de carácter personal que proporciones al comentar serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es moderar los comentarios. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en Disqus (disqus.com), mi sistema de comentarios, que está acogido al acuerdo de seguridad EU-US Privacy. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLÍTICA DE PRIVACIDAD.

Sobre j2logo

j2logo

Últimos posts

¿Quieres ser un auténtico Pythonista? 🐍

Recibe de vez en cuando trucos, scripts y tutoriales Python en español para dominar el lenguaje. No es SPAM. Date de baja cuando quieras.

* Te informo de que los datos de carácter personal que proporciones serán tratados por Juan José Lozano Gómez como responsable de esta web. La Finalidad es el envío de trucos, scripts, mis publicaciones así como correos comerciales. La Legitimación es gracias a tu consentimiento. Destinatarios: tus datos se encuentran alojados en mi plataforma de email marketing MailRelay que garantiza las medidas de seguridad encaminadas a proteger la privacidad. Podrás ejercer Tus Derechos de Acceso, Rectificación, Limitación o Suprimir tus datos enviando un email a juanjo@j2logo.com. Encontrarás más información en la POLITICA DE PRIVACIDAD

Tutoriales Python en español

👉🏻 🐍 Tutoriales Python. ¿Por qué Python?