2009-09-24 12 views
7

Soy un principiante en Python. Quiero crear un nuevo objeto de lista en python.Crear nuevo objeto de lista en Python

Mi Código:

recordList=[] 

mappedDictionay={} 

sectionGroupName= None 

for record in recordCols: 
    item = record 
    print item 

    if not sectionGroupName == record[0]: 
     sectionGroupName = record[0] 
     del recordList[0:] # Here I want to create new list object for recordList 
     recordList.append(item) 
     mappedDictionay[sectionGroupName] = recordList 
    else: 
     recordList.append(tempItem) 
+0

formatee el código como código, o no será comprensible (especialmente si es python!) – fortran

+0

¿Podría mostrar qué estructura de datos está comenzando y con qué desea finalizar? Es más que probable una mejor manera de hacer lo que quiere, pero no puedo descifrarlo de su código de ejemplo. – DisplacedAussie

Respuesta

10

No es tan fácil de entender su pregunta, sobre todo porque su código pierde su formato, pero se puede crear una nueva lista de objetos con bastante facilidad. A continuación se asigna un nuevo objeto a la lista de variables recordList:

recordList = list() 

También es posible usar

recordList = [] 

[] y la lista() es equivalente en este caso.

+0

Gracias por la información. Es muy útil para mí. –

4

Python es garbage-collected. Solo haga

recordList = [] 

y tendrá una nueva lista vacía.

+0

Gracias por la información.Es muy útil para mí. –

+0

@crk: no dude en aceptar la respuesta, por supuesto. :) – unwind

4

No utilice del. Período. Es algo "avanzado".

from collections import defaultdict 

mappedDictionay= defaultdict(list) # mappedDictionary is a poor name 
sectionGroupName= None 

for record in recordCols: 
    mappedDictionay[record[0]].append(record) 
+0

Gracias por la información. Es muy útil para mí. –

+0

@crk: si es útil, quizás debería hacer clic en aceptar. Si no es aceptable, quizás deba explicar qué más necesita. –

1

Puede utilizar list() o simplemente [] para crear una nueva lista. Sin embargo, creo que lo que está tratando de lograr puede ser resuelto simplemente utilizando grouby:

from itertools import groupby 
mappedIterator = groupby(recordCols, lambda x: x[0]) 

o

from itertools import groupby 
from operator import itemgetter 
mappedIterator = groupby(recordCols, itemgetter(0)) 

si lo prefiere.

La función groupBy devolverá un iterador en lugar de un diccionario, donde cada elemento tiene el formato (category, sub-iterator-over-items-in-that-category).

Si realmente quiere convertirlo en un diccionario como que tiene en su código, puede ejecutar el siguiente después:

mappedDictionary = dict(((x[0], list(x[1])) for x in mappedIterator)) 
+0

Gracias por la información. Es muy útil para mí. –

0

Usted desea crear una nueva lista?
Es fácil: para, por ejemplo, quieres hacer una lista de días, escribir lo siguiente:

new_list=['mon','tue','wed','thurs','fri',sat','sun']

Aquí el nombre de la lista es new_list y contiene el nombre de los diferentes días de la semana.

Note: nunca olvide usar los corchetes [] para hacer una lista, usar() creará una tupla, un objeto muy diferente y {} creará un objeto de diccionario que generará un error en su lugar.

Cuestiones relacionadas