2009-09-24 10 views
7

Sono un principiante in python. Voglio creare un nuovo oggetto List in python.Crea un nuovo oggetto List in python

My Code:

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

formatta il codice come codice, o non sarà comprensibile (specialmente se è python!) – fortran

+0

Puoi mostrare quale struttura dati stai iniziando e cosa vuoi concludere? C'è molto probabilmente un modo migliore per fare ciò che vuoi ma non riesco a scoprirlo dal tuo codice di esempio. – DisplacedAussie

risposta

10

Non è così facile da capire la tua domanda, soprattutto perché il codice perso la sua formattazione, ma è possibile creare oggetti abbastanza facilmente nuova lista. Di seguito assegna un nuovo oggetto lista alla recordList variabile:

recordList = list() 

Si potrebbe anche usare

recordList = [] 

[] e la lista() sono equivalenti in questo caso.

+0

Grazie per l'informazione. È molto utile per me –

4

Python è garbage-collected. Basta fare

recordList = [] 

e avrai una nuova lista vuota.

+0

Grazie per l'informazione.È molto utile per me –

+0

@crk: Sentitevi liberi di accettare la risposta, ovviamente. :) – unwind

4

Non utilizzare del. Periodo. È una cosa "avanzata".

from collections import defaultdict 

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

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

Grazie per l'informazione. È molto utile per me –

+0

@crk: se è utile, forse dovresti fare clic su accetta. Se non è accettabile, forse dovresti spiegare di più. –

1

È possibile utilizzare list() o semplicemente [] per creare un nuovo elenco. Tuttavia, penso che quello che sta cercando di ottenere può essere risolto semplicemente utilizzando 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)) 

, se si preferisce.

La funzione groupBy restituirà un iteratore anziché un dizionario, in cui ogni elemento è del formato (category, sub-iterator-over-items-in-that-category).

Se davvero si vuole convertirlo in un dizionario, come lo avete nel vostro codice, è possibile eseguire il seguente seguito:

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

Grazie per l'informazione. È molto utile per me –

0

Si desidera creare una nuova lista?
E 'facile: per esempio, si vuole fare una lista di giorni, scrivere il seguente:

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

Qui il nome della lista è new_list e contiene il nome di diversi giorni della settimana.

Nota: non dimenticare mai uso parentesi quadre [] per fare una lista, utilizzando() crea una tupla, un oggetto molto diverso e {} creerà un oggetto dizionario che sollevare un errore invece.

Problemi correlati