valor resueltos recorrer que lista elementos ejercicios diccionarios diccionario dentro convertir buscar agregar python list dictionary append

resueltos - que es un diccionario en python



Anexando un diccionario a una lista en un loop Python (4)

Cuando crea el diccionario adict fuera del bucle, está agregando el mismo dictamen a su alist . Significa que todas las copias apuntan al mismo diccionario y que obtiene el último valor {1:99} cada vez. Simplemente crea cada diccionario dentro del bucle y ahora tienes tus 100 diccionarios diferentes.

alist = [] for x in range(100): adict = {1:x} alist.append(adict) print(alist)

Soy un programador básico de Python, así que espero que la respuesta a mi pregunta sea fácil. Estoy tratando de tomar un diccionario y adjuntarlo a una lista. El diccionario luego cambia los valores y luego se agrega nuevamente en un bucle. Parece que cada vez que hago esto, todos los diccionarios de la lista cambian sus valores para que coincidan con el que se acaba de agregar. Por ejemplo:

>>> dict = {} >>> list = [] >>> for x in range(0,100): ... dict[1] = x ... list.append(dict) ... >>> print list

Asumiría que el resultado sería [{1:1}, {1:2}, {1:3}... {1:98}, {1:99}] pero en su lugar obtuve:

[{1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}]

Cualquier ayuda es muy apreciada.


Debe adjuntar una copia , de lo contrario, simplemente está agregando referencias al mismo diccionario una y otra vez:

yourlist.append(yourdict.copy())

Utilicé yourdict y yourlist lugar de dict y list ; no desea enmascarar los tipos incorporados.


Solo pon dict = {} dentro del bucle.

>>> dict = {} >>> list = [] >>> for x in range(0, 100): dict[1] = x list.append(dict) dict = {} >>> print list


También puede usar zip y comprensión de listas para hacer lo que necesita.

Si desea que los valores de dict empiecen en un range(1,100) uso range(1,100)

l = [dict(zip([1],[x])) for x in range(1,100)]