Introducci贸n

1

El Zen de Python

Conjuntos

2

Sets

3

Modificando conjuntos

4

Operaciones con conjuntos

5

Playgrounds: Elimina elementos duplicados usando conjuntos

Comprehensions

6

List Comprehension

7

Dictionary Comprehension

8

Dictionary Comprehension: condition

9

Playgrounds: Crea una lista usando List Comprehension

10

Lists vs. Tuples vs. Sets

Funciones

11

Funciones

12

Funciones: return

13

Par谩metros por defecto y m煤ltiples returns

14

El scope

15

Refactor game

16

Playgrounds: Tienda de Tecnolog铆a

17

Funciones an贸nimas: lambda

18

Higher order function: una funci贸n dentro de otra funci贸n

19

Map

20

Map con diccionarios

21

Reto: map con inmutabilidad

22

Playgrounds: Multiplica todos los elementos por dos

23

Filter

24

Playgrounds: Retorna solo palabras de 4 letras y m谩s

25

Reduce

M贸dulos

26

M贸dulos

27

Mis propios m贸dulos

28

M贸dulos como scripts: __name__ y __main__

29

Paquetes

30

Playgrounds: Calcular la suma de todas las compras

Manipulaci贸n de archivos y errores

31

Iterables

32

Errores en Python

33

Manejo de excepciones

34

Playgrounds: Captura la excepci贸n: ZeroDivisionError

35

Leer un archivo de texto

36

Escribir en un archivo

37

Leer un CSV

38

Playgrounds: Lee un CSV para calcular el total de gastos

Gr谩ficas en Python

39

Creando una gr谩fica

40

Reto: graficando la poblaci贸n de un pa铆s

41

Reto: graficando la poblaci贸n mundial

Pr贸ximos pasos

42

隆Conoce otros proyectos de este curso!

43

Reconoce tu proceso y certif铆cate

44

Toma el Curso de PIP y Entornos Virtuales con Python

No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Dictionary Comprehension: condition

8/44
Recursos

Aportes 71

Preguntas 8

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Reto cumplido

La l铆nea m谩gica que debemos cambiar para que cuente la frecuencia es:

Cambiar c: c.upper() por c: text.count(c)

Antes:

text = "Hola a todos, esta es una cadena de texto de prueba."
unique = { c: c.upper() for c in text if c in 'aeiou' }

Despu茅s:

text = "Hola a todos, esta es una cadena de texto de prueba."
unique = { c: text.count(c) for c in text if c in 'aeiou' }

Mi c贸digo final:

def run():
    text = "Hola a todos, esta es una cadena de texto de prueba."
    print(text)
    unique = { c: text.count(c) for c in text if c in 'aeiou' }
    print(f"unique: {unique}")

if __name__ == '__main__':
    run()

Ahora si queremos que nos re emplace si la letra es par o impar seg煤n el numero que le corresponde, para ello realizamos el siguiente ejemplo.

dict1 = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6}
reemplazar = {k: ('impar' if v % 2 == 0 else 'par') for (k, v) in dict1.items()}
print(reemplazar)
Obtenemos
print(reemplazar)
{'a': 'par', 'b': 'impar', 'c': 'par', 'd': 'impar', 'e': 'par', 'f': 'impar'}

Material de Apoyo

Gui谩ndome del aporte de Terry, hice como ser铆a analizar un texto completo. Con vocales normales, acentuada, consonantes y todas las letras en conjunto:

def run():
  
  vowels = 'aeiou'
  special_vowels = '谩茅铆贸煤眉'
  all_vowels = vowels + special_vowels
  consonants = 'bcdfghjklmn帽pqrstvwyz'
  all_the_letter = all_vowels + consonants
  
  text = """

Poema Fe m铆a de Pedro Salinas
  
No me f铆o de la rosa

de papel,

tantas veces que la hice

yo con mis manos.

Ni me f铆o de la otra

rosa verdadera,

hija del sol y saz贸n,

la prometida del viento.

De ti que nunca te hice,

de ti que nunca te hicieron,

de ti me f铆o, redondo

seguro azar."""

  text = text.lower()

  print("Descomposici贸n del texto: " "\n")
  
  total_vowels = { i: text.count(i) for i in text if i in all_vowels}
  print(f"total_vowels: {total_vowels}" "\n")
  
  total_consonats = { i: text.count(i) for i in text if i in consonants}
  print(f"total_consonats: {total_consonats}" "\n")

  all_the_letter = { i: text.count(i) for i in text if i in all_the_letter}
  print(f"all_the_letter: {all_the_letter}" "\n")

if __name__ == '__main__':
    run()

Para el conteo de las vocales hice de esta forma -->

texto = 'Hola, soy Stefanie'

unico = {c.upper() : texto.count(c) for c in texto if c in {'a', 'e', 'i', 'o', 'u'}}

print(unico)

La comprensi贸n de diccionario con condici贸n es una forma concisa de crear un diccionario a partir de otro diccionario existente, filtrando los elementos seg煤n una condici贸n dada.

La sintaxis b谩sica de la comprensi贸n de diccionario con condici贸n es la siguiente:

css
{key: value for key, value in dictionary.items() if condition}

donde dictionary es el diccionario original, condition es la condici贸n que se eval煤a para cada par clave-valor del diccionario original y solo se incluyen los elementos que cumplen con la condici贸n.

Por ejemplo, supongamos que tenemos un diccionario que contiene el nombre y la edad de varias personas:

people = {'Alice': 25, 'Bob': 30, 'Charlie': 35, 'Dave': 40}

Podemos crear un nuevo diccionario que contenga solo los nombres y las edades de las personas mayores de 30 a帽os de la siguiente manera:

css

{key: value for key, value in people.items() if value > 30}

El resultado ser铆a:

python

{'Charlie': 35, 'Dave': 40}

Este diccionario solo contiene las personas mayores de 30 a帽os y sus edades correspondientes.

Esto lo saque de chatgpt sirve de mucho para reforzar el conocimiento.

Hice un peque帽o ejercicio pr贸pio para reforzar:

  • Genere un diccionario usando comprehension para poder guardar una relaci贸n llave valor con el conteo de las vocales de una palabra introducida

Mi soluci贸n:

palabra=str(input("Digita la palabra=> "))
dictionary={char:palabra.count(char) for char in palabra if char in 'aeiou'}
print(dictionary)

Comparto mi codigo.

import random
countries = ['Col', 'Mex', 'Arg', 'USA']
population_v2 = {country: random.randint(1, 100) for country in countries}
print(population_v2)

result = { country: population for (country, population) in population_v2.items() if population > 30}
print(result)

result = {country: population for (country, population) in population_v2.items() if population > 20}

text = 'Hola, soy Andy y esta es una cadena de caracteres de prueba'
unique = {a: a.upper() for a in text if a in 'ndu'}
print(unique)
unique_2 = {d: d.count(text) for d in text if d in 'auio'}
print(unique_2)
import random
countries = ['col', 'mex','bol', 'pe']

population_v2 = {country: random.randint(1, 100) for country in countries}
print(population_v2)

result ={country: population for (country, population) in population_v2.items() if population > 50}
print(result)

text = 'Hola, soy Nicolas'
unique = {c: c.upper() for c in text if c in 'aeiou'}
print(unique)

Ac谩 hice una representaci贸n del mundial

import random
countries = ["Qatar", "Alemania", "Dinamarca", "Brasil", "B茅lgica", "Francia", "Croacia", "Espa帽a", "Serbia", "Inglaterra", "Suiza", "Paises Bajos", "Argentina", "Ir谩n", "Corea del Sur", "Jap贸n", "Arabia Saudita", "Uruguay", "Ecuador", "Canad谩", "Ghana", "Senegal", "Portugal", "Polonia", "T煤nez", "Marruecos", "Camer煤n", "Estados Unidos", "M茅xico", "Gales", "Australia", "Costa Rica"]
Wins = {country: random.randint(1, 7) for country in countries}

result = {country: win for (country, win) in Wins.items() if win > 6 }
print(result)
import random
con = ['col','mex','bol','pe']
pobla_2 ={cont: random.randint(1,100) for cont in con}
print(pobla_2)

result = {cont: pobla for (cont,pobla)in pobla_2.items() if pobla > 30}
print(result)

text = 'Hola, soy Sergio'
unique = { c: c.upper() for c in text if c in 'aeiou'}
print(unique)

MI soluci贸n al reto 馃槃

frequency = {
  char: text.count(char)
  for char in text if char.lower() in "aeiou"
}

C贸mo lo quiero + C贸mo lo busco + filtro

Hice un programa para que contara las veces que aparece una vocal en un texto:

text= 'El cielo resplandece a mi alrededor'
countUnique = {c: text.count(c) for c in 'aeiou'}
print(countUnique)

Les comparto el c贸digo que hice con el fin de practicar list y dictionary comprehension a lavez. La idea es poder crear un diccionario con la informacion que ingrese el usuario para los valores sobre su nombre, edad y profesion.

info = ["name", "age", "Profession"]
data = [input("ingresa " + i + " :") for i in info]
user_data = {i:e for (i,e) in zip(info, data)}

print(user_data)

Soluci贸n agregando al diccionario una lista con la letra en may煤scula y la cantidad de ocurrencias:

unique = {c: [c.upper(), text.count(c)] for c in text if c in 'aeiou'}
print(unique)

Dict Comprehension con conidicion

#-----------Dict comprehension con coniciones------------

#Crear un dict comprehension con una lista
import random 
countries = ['colombia', 'bolivia', 'mexico']

population = { country: random.randint(1, 100) for country in countries}
print(population)
--> {'colombia': 36, 'bolivia': 23, 'mexico': 13}

#crear un dict comprehension con una condicion
#paises con poblacion mayor a 30
result = {country: population for (country, population) in population.items() if population > 30}
print(result) 
--> {'colombia': 36}

#dict comprehension de las vocales de una oracion
text = 'Hola nuevo mundo'
unique = { c: c.upper() for c in text if c in 'aeiou'}
print(unique)
--> {'o': 'O', 'a': 'A', 'u': 'U', 'e': 'E'}

Chicos les comparto mi soluci贸n al reto!

text = 'Hola, soy Nicolas'
unique = {c: text.count(c) for c in text if c in 'aeiou'}
print(unique)

Con todo esto se podr铆a hacer una funci贸n que verifique la complejidad de una contrase帽a.

Lo intente hacer desde el otro modo para comprenderlo mejor y lo pude entender mejor, espero les pueda servir

text = 'Hola, soy Alex'
for c in text:
    if c in 'aeiou':
        dict= {c:c.upper()}
        print(dict )

Mi soluci贸n al reto 馃槃

text = "Hola, Soy Paola"
vowels = ["a", "e", "i", "o", "u"]
total_vowels = {
  letter: text.lower().count(letter.lower())
  for letter in text if letter in vowels
}

print(total_vowels)

Adjunto el codigo que hice del dictionary comprehesion con dos condicionales:

mascotas = ['perro','gato','perico', 'pato','hamster']
nombres_mascotas = ['Max','Michi','Poli','Patroclo','Solovino']

lista_dicc = {nombre_mascota:mascota for (nombre_mascota, mascota) in zip(nombres_mascotas, mascotas) if 'e' in mascota and 'i' in nombre_mascota}

print(lista_dicc)

algoritmo :
que cuente el n煤mero de vocales de un texto y lo imprima en un diccionario

text = "Hola soy NicolasU"
vocales ="aeiou" #"a","e","i","o","u"]
suma = suma_total = 0
dicc = {}
for i in vocales.lower():
  for e,j in enumerate(text.lower()):
    #print(e,i,j)
    if i == j:
      suma += 1
    if e == len(text)-1:    
      suma_total = suma
      if suma_total != 0:
        dicc[i] = suma_total
        suma = 0
        suma_total = 0
       
print(dicc)   

text=鈥楬ola, soy Miguel鈥
#unique = { c: c.upper() for c in text if c in 鈥榓eiou鈥 }
unique = { c: text.count漏 for c in text if c in 鈥榓eiou鈥 }
print(unique)

Resumen 馃槂

import random
countries = ['col', 'mex','bol', 'pe']

#Dictionary comprehension
population_v2 = {country: random.randint(1, 100) for country in countries}
print(population_v2)

#Dictionary comprehension con condition
result ={country: population for (country, population) in population_v2.items() if population > 50}
print(result)

#obtener una vocal como llave y con su valor en mayuscula
text = 'Hola, soy Nicolas'
unique = {c: c.upper() for c in text if c in 'aeiou'}
print(unique)


def captar(name,last_name,age_user,location):
    while len(name) == 0 or len(last_name) == 0 or age_user <= 0 or len(location) == 0:
        if len(name) == 0:
            print("Este campo de nombre no puede estar vacio")
            name = input("Escribe tu nombre: ")
        elif len(last_name) == 0:
            print("Este campo de apellido no puede estar vacio")
            last_name = input("Escribe tu apellido: ")
        elif age_user == 0:
            print("Este campo de edad no puede estar vacio")
            age_user = int(input("Escribe una edad: "))
        elif len(location) == 0:
            print("Este campo  de direccion no puede estar vacio")
            location = input("Escribe tu direccion")
    collectios = {"Nombre":name,"Apellido":last_name,"Edad":age_user,"Direccion":location}
    just_using = {key:value for key,value in collectios.items()}
    print(f"Gracias", just_using["Nombre"], "por tu colaboracion.")

AQUI UN FORMULARIO BASICO INTEGRANDO VARIOS CONCEPTOS


def run():
    name = input("Escribe tu nombre: ")
    last_name = input("Escribe tu apellido: ")
    age_user = int(input("Escribe tu edad: "))
    location = input("Escribe tu direccion: ")
    captar(name,last_name,age_user,location)

if __name__ == "__main__":
    run()

import random
paises = [鈥渃ol鈥,鈥渧zl鈥,鈥減an鈥,鈥渃l鈥漖

poblacion = { pais: random.randint(1,100) for pais in paises}
print(poblacion)

resultado = {pais:poblacio for (pais,poblacio) in poblacion.items()if poblacio>20}
print(resultado)

texto = "Hola soy camilo"
unico = {c: c.upper()for c in texto if c in 鈥渁eiou鈥 }
print(unico)

Notas de clase

#Otro ejemplo
import random
countries = ['col', 'mex']

#Con Dictionary Comprehension
population_v2 = {i:random.randint(1, 999) for i in countries}

print(population_v2)

result = {country:population for (country, population) in population_v2.items() if population > 500}
print(result)

text = 'Hola, soy Jose'
dict = {c: c.upper() for c in text if c in 'aeiou'}
print(dict)

text = 'Hola, soy Jose'
dict = {c: text.count(c) for c in text if c in 'aeiou'}
print(dict)

Esta es mi soluci贸n al reto

frase = 'murcielago'
txt = 'aeuiueiaaaaaaaaaaa'
unico = { caracter: caracter.upper() for caracter in frase if caracter in 'aeiou'}
print(unico)

vocales = ['a', 'e', 'i', 'o', 'u']

vowel = {letra : frase.count(letra) for letra in frase if letra in 'aeiou'} 
print(vowel)

contador_vocales = {char : txt.count(char) for char in txt if char in 'aeiou'}
print(contador_vocales)

Con el ejemplo anterior un ejercicio

personas = ['Alexander', 'Raquel', 'Jose']
edades = [28,29,68]

dict_persona_edad = {personas[i]:edades[i] for i in range(0,len(personas)) if edades[i]>30}
print(dict_persona_edad)

Reto:

text =  'Hola, soy programador'
unique = {c: c.upper() for c in text if c in 'aeiou'}
print(unique)

letter_counts = {}
for letter in unique:
    count = text.count(letter)
    letter_counts[letter] = count

for letter, count in letter_counts.items():
    print(f"{letter}: {count}")

Le recomiendo el libro 鈥淟earning Python鈥 escrito por el mism铆simo Guido Van Rossum, ah铆 explica muy bien y con ejemplos.

En lo personal estos temas de list y dictionary comprehesion no los comprend铆 muy bien. Tratare de buscar otras fuentes de informaci贸n que me ayuden a entender mejor.

Hice la prueba con mi nombre 鈥楬ola, soy Eliana鈥 que comienza con una vocal 鈥楨鈥. Cuando hago correr con el m茅todo del profesor no cuenta la letra 鈥榚鈥 may煤scula, sino s贸lo min煤sculas. Yo escrib铆 el siguiente c贸digo y funcion贸, en las opciones aument茅 las vocales en may煤scula. Pero debe haber otra forma mejor. Si por favor, alguien del curso sabe?

texto = 'Hola, soy Eliana'
vocales = { c: c.upper() for c in texto if c in 'aeiouAEIOU'}
print(vocales)

Si alguien puede indicarme c贸mo se puede hacer en este caso.

Aplicando la may煤scula y que las cuente.

Muy poco clara esta clase, ser铆a bueno que explicaras la logica de como leer el codigo y de donde sale es comando.items por ejemplo 馃槮

import random
countries = ['col', 'mex', 'bol', 'pe']

population_v2 = { country: random.randint(1, 100) for country in countries}
print(population_v2)

result = { country: population for (country, population) in population_v2.items() if population > 50}

print(result)

text = 'Hola, soy Andres'
unique = { c: c.upper() for c in text if c in 'aeiou' }
print(unique)

por que da por sentado, que sabemos, de que ba el metodo items()

En Dictionary Comprehension, la cl谩usula condition es una expresi贸n opcional que permite filtrar los elementos del iterable antes de ser agregados al diccionario.

Para contar cuantas veces aparece cada vocal:

text = 'Hola, soy Nicolas'
unique = { c: text.count(c) for c in text if c in 'aeiou' }
print(unique)
text = 'Hola, soy Nestor y me gusta programar'
a = 0
e = 0
i = 0
o = 0
u = 0
vowels = {character: character.upper() for character in text if character in 'aeiou'}
print(vowels)

for character in text: # A la antig眉ita
  if character == 'a':
    a += 1
  elif character == 'e':
    e += 1
  elif character == 'i':
    i += 1
  elif character == 'o':
    o += 1
  elif character == 'u':
    u += 1

print(f'a:{a} e:{e} i:{i} o:{o} u:{u}')

times = {character: text.count(character) for character in text if character in 'aeiou'} 
print(times)

Poluseishon

No voy a mentir, busqu茅 en google c贸mo contar caracteres dentro de un string y ah铆 d铆 con el m茅todo .count()

Reto propuesto: Contar la frecuencia de cada vocal:

<
text = 'Hola, soy Ronald'
unique = {c: text.count(c) for c in text if c in 'aeiou'}
print(unique)
> 
# Diccionario que asocia cada pa铆s con su continente
continentes = {
    "Argentina": "Am茅rica del Sur",
    "M茅xico": "Am茅rica del Norte",
    "Espa帽a": "Europa",
    "China": "Asia",
    "Australia": "Ocean铆a"
}

# Lista de continentes y pa铆ses de inter茅s
continentes_interes = ["Am茅rica del Sur", "Europa", "Ocean铆a"]
paises_interes = ["Argentina", "Chile", "Espa帽a", "Francia", "Australia", "Nueva Zelanda"]

# Dictionary comprehension con condicionales seg煤n el continente de cada pa铆s
paises_por_continente = {pais: continente for pais, continente in continentes.items()
                         if continente in continentes_interes and pais in paises_interes}

# Imprimir el resultado
print(paises_por_continente)

Hola!

Les comparto el c贸digo de la clase y la soluci贸n al reto final 馃挌

# Dictionary Comprehension: condition

import random
countries = ["col", "mex", "bol", "peru"]
population_v2 = { country: random.randint(1, 100) for country in countries }

print(population_v2)

# Generar nuevo diccionario con los paises que tengan una poblacion mayor que 20
result = { country: population for(country, population) in population_v2.items() if population > 20 }

print(result)

# Diccionario con las volales de un texto
text = "Hola, soy Sara"
unique = { c: c.upper() for c in text if c in 'aeiou' }
print(unique)

# Diccionario con el contador de apariciones de la vocal en el texto
counts = { c: text.count(c) for c in text if c in 'aeiou' }
print(counts)

aqui les traigo la soluci贸n para devolver el diccionario con las vocales contadas

Reto cumplido:
text = 'HI, this is a text鈥
print({c: text.count漏 for c in text if c in 鈥榓eiou鈥檥)

Comparto el c贸digo de la clase hecho a mi manera. Lo expreso de la siguiente forma para evitar confusi贸n con respecto al llamado de variables y el alcance de las mismas.
.
Primero, se crea una lista de valores, en este caso pa铆ses (de paso se importa la librer铆a random para los valores al azar):

import random

values = ['ARG','MEX','USA','FRA','JAP','BRA']

Segundo, se incorpora en un diccionario esos pa铆ses con un valor al azar.
En este caso 鈥渋鈥 representa el 鈥溍璶dice鈥 que corresponde a cada una de las claves de los valores de un diccionario, el cual se itera para a帽adir el valor al azar a cada uno de los pa铆ses.

population = {
    i : random.randint(50,200)
    for i in values
}

Por 煤ltimo, se crea otro diccionario en el cual se itera los pares clave : valor, en este caso i : k teniendo en cuenta los pares del diccionario creado anteriormente (countries), por esa raz贸n se utiliza el m茅todo .items(), y se a帽ade la condici贸n de que el valor k sea mayor a 100.

countries = {
    i : k
    for (i, k) in population.items()
    if k > 100
}

Despu茅s se imprimen los valores (pongo ambos para comparar).

print(population)
print(countries)

Como resultado me dio lo siguiente (siempre van a dar valores distintos)

{'ARG': 180, 'MEX': 150, 'USA': 189, 'FRA': 128, 'JAP': 92, 'BRA': 95}
{'ARG': 180, 'MEX': 150, 'USA': 189, 'FRA': 128}

Saludos! Espero les sea de utilidad

#Dictionary por compresion con condicion
'''
{key: value for var in iterable if condition}
'''
import random
    
paises=["col","mex","per","bol"]
poblacion={}

poblacion_v2={pais:random.randint(1,100) for pais in paises}

print(poblacion_v2)


resultado={pais:poblacion for (pais,poblacion) in poblacion_v2.items() if poblacion>20}
print(resultado)

#Un diccionario no puede repetir llaves
text="Hola soy gustav"
unique={c:c.upper() for c in text if c in "aeiou"}
print(unique)

text="Hola soy gustav"
unique={c:text.count(c) for c in text if c in "aeiou"}
print(unique)

N煤mero de veces que se repite cada vocal de la cadena de texto
Soluci贸n:
dicc="Hola,soy Nicolas el mejor developer"
resultado2={c:dicc.count漏 for c in dicc if c in 鈥渁eiou鈥潁
print(resultado2)

Aqu矛, la resolucion del reto que dej貌 el profe:

import os

text = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut pretium dui vel neque suscipit, ut venenatis nisi consectetur. Phasellus sed arcu et nisl auctor lacinia. Curabitur vehicula eget lacus ut vulputate. Suspendisse eleifend ligula vel placerat convallis. Suspendisse sem ex, consequat vel maximus ac, tristique non justo. Ut hendrerit a nunc id blandit. Suspendisse consequat mauris vitae vehicula facilisis. Pellentesque eu lorem nec risus tempus dignissim vel in magna.'

def count_vowels(text):

    unique = {vowel:text.lower().count(vowel) for vowel in text if vowel in 'aeiou'}

    return unique

def main():
    print(count_vowels(text))
    
if __name__ == '__main__':
    os.system('clear')
    main()

//{鈥榦鈥: 12, 鈥榚鈥: 50, 鈥榠鈥: 41, 鈥榰鈥: 36, 鈥榓鈥: 28}

**texto = 鈥淗ola mundito鈥

vocales = {c.upper(): texto.count漏 for c in texto if c in 鈥渁eiou鈥潁
print(vocales)**

me sirve hacerlo de la forma larga para entenderlo mejor y de alli hacer la forma corta. si intento la forma corta sina ntes la larga me enredo

unique_v2 = {}
for c in text:
    if c in "aeiou":
        unique_v2[c] = text.count(c)
print(unique_v2)
import random
""" dict comprehension conditionaly """

countries = ["ar", "bol", "co", "ecu", "mex"]
populations = {country: random.randint(100, 200) for country in countries}
print(populations)

new_populations = {country: population for (country, population) in populations.items() if population > 140}
print(new_populations)

# Example
text = "She can't help herself at all"
print(text)
dict = {c: text.count(c) for c in text if c in "aeiou"}
print(dict)

Hola, Mi soluci贸n al reto:

# Reto
text = "HOLA A TODOS MI NOMBRE ES MIGUEL, y este programa cuenta la cantidad de vocales sin importar las MAYUSCULAS"
unique = {c: text.lower().count(c) for c in text if (c in 'aeiou')}
print(unique)

Ejercicio

Contar el n煤mero de apariciones de cada vocal en una frase:

sentence_str = "This is a new Python course"
sentence = sentence_str.lower()

vowels_dict = {letter: sentence.count(letter) for letter in sentence if letter in 'aeiou'}

print(vowels_dict)

鉁 Challenge reached 鉁

  • Los diccionarios son tipos de datos en Python que nos permiten almacenar datos en pares clave/valor . Por ejemplo:

my_dict = {1: 'apple', 2: 'ball'}

驴Qu茅 es la comprensi贸n de diccionario en Python?

  • La comprensi贸n de diccionarios es una forma elegante y concisa de crear diccionarios.

  • Ejemplo 1: Comprensi贸n de diccionario
    Considere el siguiente c贸digo:

square_dict = dict()
for num in range(1, 11):
    square_dict[num] = num*num
print(square_dict)
  • Ahora, creemos el diccionario en el programa anterior usando la comprensi贸n del diccionario.
# dictionary comprehension example
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)

{1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81, 10: 100}

Podriamos usar la funci贸n Set al imprimir para que no repita los valores: print(set(unique)) y lo hace muy bien.

text = 'Hola, soy un estudiante de Platzi' unique = { c:c.count(text) for c in text if c in 'aeiou' }

Ejercicio: 驴Puedes hacer un diccionario en el que guardes todas las vocales de una frase y la posici贸n que tienen dentro de la misma frase?

Es decir,
key = posici贸n_en_frase y
valor = vocal_en_frase

RESPUESTA


#Coprehension_list_dict:
lista_a=[]

dicc_b={}

names=["Rico","Renata","Dana"]
Ages=[12,25,32]


list_f= [ lista_a for lista_a in range(1,20)]
print(list_f)

dicc_f={dicc_b for dicc_b in range(0,25)}
print(dicc_f)


dicc_a= {i:i for i in range(1,20)}
print(dicc_a)

dicc_na={name:Age for (name, Age) in zip(names,Ages) }
print(dicc_na)

Puse un poquito m谩s explicito mi ejemplo para enteneder mejor

{ letra : texto.count(letra) for letra in text if letra in 'aeiou' }

En la primera parte letra : texto.count() estoy poniendo que de lado izquierdo aparezca la letra y el derecho la cantidad de veces que esta esa letra en el texto.

Mi for letra in text itera en cada letra del texto, por eso la variable la llame letra.

Por ultimo esta la condicional donde si el valor de la variable letra se encuentra en el texto 'aeiou' que significa que si es por que es vocal, si agrege la primera parte.

Esta genial un Dictionary Comprenhensions de otro!

Lo que me quedo de las condiciones en Dictionary Comprehension es que para hacer una condici贸n necesitas previamente tener un Dictionary Comprehension y de ah铆 hacer otro con las condiciones:

import random

contries_mercosur = ['ar','br','pr','uy']

pop_v1 = {i: random.randint(3,220) for i in contries_mercosur}
print(pop_v1)


pop_v2 = {country: population for(country, population) in pop_v2.items() if population >= 90}
print(pop_v2)

Reto cumplido:

Me muestra la cantidad de caracteres existentes en el texto.

amount   = {c: text.count(c) for c in text }

Cantidad de cada una de las letras en el texto pero que est谩n en la condici贸n.

amount2 = {c: text.count(c) for c in text if c in 'aeiou谩茅铆贸煤'} 

Mi pratica:
receta = [鈥淪opa鈥, 鈥淧asta鈥, 鈥淎rroz鈥, 鈥淓nsalada鈥漖
dificultad = [鈥淔acil鈥, 鈥淢edio鈥, 鈥淒ificil鈥, 鈥淢uy Dificil鈥漖

recetas = { dificultad: receta for (dificultad, receta) in zip(dificultad, receta)}
print(recetas)

{鈥楩acil鈥: 鈥楽opa鈥, 鈥楳edio鈥: 鈥楶asta鈥, 鈥楧ificil鈥: 鈥楢rroz鈥, 鈥楳uy Dificil鈥: 鈥楨nsalada鈥檥

Tambi茅n se podr铆a evitar el uso de if
(Basado en la soluci贸n de Terry):

text = 'aeioiazuaziozsiu'
unique = {vowel : text.count(vowel) for vowel in 'aeiou'}

Salida:

{'a': 3, 'e': 1, 'i': 4, 'o': 2, 'u': 2}

De esta forma se evita iterar en sobre la cadena larga de text, en su lugar solo sobre un iterable m谩s peque帽o; adem谩s de evitar un c贸mputo extra sin la condicional