Bienvenido a la Comunidad de Treehouse

¿Quieres colaborar en errores de código? ¿Tienes errores que necesitan comentarios? ¿Buscas un par de ojos adicionales en tu último proyecto? aquí.

¿Buscas aprender algo nuevo?

Treehouse ofrece una prueba gratuita de siete días para estudiantes nuevos. Obtén acceso a miles de horas de contenido y únete a miles de

Inicia tu prueba gratuita

Python Introducción a las Listas Crear una Aplicación Agregar Elementos

Estoy recibiendo todo tipo de errores -

Siguiendo el tutorial - no estoy seguro de dónde me estoy equivocando - ¡ugh!

Jeff Muday
Jeff Muday
28,732 Puntos

Anthony, ¿podrías copiar y pegar los mensajes de error en una respuesta? Ese sería un buen punto de partida para resolver tu problema.

Traceback (most recent call last):
File "/home/treehouse/workspace/shopping_list.py", line 32, in <module>
add_to_list(new_item)
File "/home/treehouse/workspace/shopping_list.py", line 8, in add_to_list
shopping_list.append(item)
AttributeError: 'dict' object has no attribute 'append'

¡Gracias chicos!

Pero estoy un poco confundido - Solo estoy siguiendo la tarea en Tree House - haciendo exactamente lo que me dicen que haga - funciona para el instructor de Treehouse -

Aquí está el código:

shopping_list = {}

def add_to_list(item):

shopping_list.append(item)

print("¡Agregado! La lista tiene {} elementos.".format(len(shopping_list)))

def show_help():

show_help()

while True:

if new_item == 'DONE':
    break
elif new_item == 'HELP':
    show_help()
    continue

add_to_list(new_item)

¿No es eso lo que tengo como mi primera línea de código?

¡Oh! Tengo {} EN LUGAR DE [] - ¡ugh!

¿entonces... los dos son muy diferentes?

¡Gracias!

Espero que esto se vuelva algo natural - pero actualmente - no estoy convencido

Parece desalentador

6 Respuestas

AJ Tran
PERSONAL
AJ Tran
Profesor de Treehouse

Hola. Veamos esa última línea del mensaje de error:

AttributeError: 'dict' object has no attribute 'append'

La fuente del error es esta línea de código:

shopping_list.append(item)

El error nos está diciendo que shopping_list es un Diccionario de Python, que no tiene un método integrado llamado .append() !

Puedes usar .append() para agregar elementos a una Lista de Python, pero no a un Diccionario de Python.

Para agregar un nuevo par clave-valor a un Diccionario, observa mis ejemplos a continuación:

# Add by using bracket-notation

inventario = {
    apples: 1,
    bananas: 2
}

inventario[milk] = 3

print(inventario)

# => {"apples": 1, "bananas": 2, "milk": 3}
# Add by using .update()

inventario = {
    apples: 1,
    bananas: 2
}

new_item = { milk: 3 }

inventario.core-js(new_item)

print(inventario)

# => {"apples": 1, "banana": 2, "milk": 3}
Jeff Muday
Jeff Muday
28,732 Puntos

Me ganaste por un minuto... ¡buena respuesta por cierto!

Jeff Muday
Jeff Muday
28,732 Puntos

Craig te pide que crees una nueva lista vacía llamada shopping_list:

shopping_list =  # create a new empty list with no items

Pero también puedes hacerlo así:

shopping_list = list() # this is equivalent to the previous declaration

Eso debería resolver tu problema.

Jeff Muday
Jeff Muday
28,732 Puntos

Mira cuidadosamente y verás corchetes cuadrados en lugar de llaves. También puedes usar la list() declaración como mostré en el segundo ejemplo.

Jeff Muday
Jeff Muday
28,732 Puntos

Ok, esos mensajes definitivamente me ayudan a saber qué está pasando en tu código.

Una de las cosas que me encanta de Python, bueno de todos los lenguajes de programación en general, es que hay numerosas formas de escribir un programa correctamente. Entonces puedes inyectar tus ideas y creatividad en la resolución de problemas.

El Error en sí que es clave es este--

Los objetos Dictionary no tienen un append() método, pero los objetos List sí. Aquí hay un ejemplo a continuación...

shopping_list =  # nota los corchetes es una lista vacía
shopping_list.append('leche') # agregar leche...
shopping_list.append('huevos') # huevos...
shopping_list.append('pan') # pan

print(shopping_list)

El resultado es este.

['leche', 'huevos', 'pan']

Como mencioné arriba, puedes escribir un proyecto que sea completamente diferente y use objetos Dictionary que funcionaría bien también. Sin embargo, no usarás append(), pero puedes usar un enfoque de clave/valor. La clave está entre corchetes, y luego asignamos a la clave un valor de cadena, ¡como leche, pan o huevos! Ver a continuación

shopping_list = [object Object] # nota las llaves es un dict vacío
shopping_list[0] = 'leche' # agregar clave valor 0/leche...
shopping_list[1] = 'huevos' # agregar 1/huevos...
shopping_list[2] = 'pan' # agregar 2/pan

print(shopping_list)

¡Y así tenemos un diccionario que contiene información similar, pero estructurada de manera un poco diferente!

{0: 'leche', 1: 'huevos', 2: 'pan'}

¡Espero que esto te ayude!

Jeff Muday
Jeff Muday
28,732 Puntos

Definitivamente puede ser confuso al principio, pero se convertirá en segunda naturaleza ya que usarás tanto objetos diccionarios como listas bastante.

Otra estructura genial es el set() y el conjunto es algo como una lista pero no permite elementos repetidos y eso puede ser muy útil. Y el conjunto usa llaves como el diccionario, pero lo descubrirás pronto.

¡Buena suerte en tu viaje por Python!

Jeff Muday
Jeff Muday
28,732 Puntos

La repetición es la clave: programa un poco cada día y se convertirá en tu nuevo amigo. Cuando siento estrés abrumador (¡te estoy mirando a ti 2020!) elegiré una idea de proyecto rápido y trabajaré en ello. ¡Mi mente va a un lugar completamente diferente y tranquilo con Ruby, Python o JavaScript como mi kit de herramientas! Sí, soy friki de esa manera.

Además... deberías consultar el sitio web

https://repl.it

En caso de que no tengas tu computadora lista para Python, puedes ir allí y tener espacios de trabajo de Python. Por ejemplo, podrías poner el proyecto Lista de compras allí o cualquier otra cosa de la que estés realmente orgulloso y puedas compartir tu código bastante fácilmente con posibles empleadores o clientes.

¡Mucha suerte en tu viaje!