Visualizzazione dei risultati da 1 a 9 su 9

Discussione: [Python] List di list

  1. #1

    [Python] List di list

    salve!
    una domanda forse banale ma che non riesco a risolvere.
    prendo dei dati in formato json da remoto:
    codice:
    def listLogFile(self):
            self.conn.request(method = "GET", url = "......", headers = { "Content-Type": "application/json" })
            res = self.conn.getresponse()
            data = json.loads(res.read())
            tabella = []
            for i in data:
                list = []
                list.append(i["nome"])
                list.append(i["data"])
                tabella.append(list)
            self.conn.close()
            print tabella
    i dati mi escono così:
    codice:
    [[u'log_clienti_18-02-13.txt', 1361182998], [u'log_articoli_18-02-13.txt', 1361183029], [u'log_condizioni_18-02-13.txt', 1361183374], [u'log_clienti_21-02-13.txt', 1361436089], [u'log_condizioni_21-02-13.txt', 1361436128], [u'log_clienti_22-02-13.txt', 1361547525], 
    [u'log_listini_t_22-02-13.txt', 1361547538], [u'log_condizioni_22-02-13.txt', 1361547587]]
    ammettendo che sia giusto come ho fatto, come faccio ad iterare e mettere i dati in righe e colonne?
    non sono riusctio a capire!

  2. #2
    Cosa intendi per "mettere i dati in righe e colonne"? Intendi stampandoli a schermo o cos'altro?
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    diciamo ni, nel senso che in verità mi servirebbe questo.
    da un'altra parte mi serivrebbe poi creare due liste distinte, una con la prima voce di ogni lista e una cosa la seconda.
    cioè partendo da questi dati:
    codice:
    [
     [u'log_clienti_18-02-13.txt', 1361182998], 
     [u'log_articoli_18-02-13.txt', 1361183029], 
     [u'log_condizioni_22-02-13.txt', 1361547587]
    ]
    avere una cosa così:
    codice:
    listNomi = [u'log_clienti_18-02-13.txt', u'log_articoli_18-02-13.txt', u'log_condizioni_22-02-13.txt' ]
    e una cosa analoga per le date.
    ma suppongo che non si possa fare.
    forse devo cambiare approccio.

  4. #4
    Supponendo che la lista iniziale si chiami listTotale:
    codice:
    listNomi, listaDate = zip(*listTotale)
    * "smonta" listTotale, passando le sottoliste come argomenti di zip;
    zip funziona così, e restituisce una lista contenente le due liste che ti interessano;
    listNomi, listaDate è una tupla; nell'assegnamento la lista a destra viene convertita in tupla (contenente ancora le due liste), e a listNomi e listaDate viene assegnata quindi ciascuna lista.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Originariamente inviato da MItaly
    Supponendo che la lista iniziale si chiami listTotale:
    codice:
    listNomi, listaDate = zip(*listTotale)
    * "smonta" listTotale, passando le sottoliste come argomenti di zip;
    zip funziona così, e restituisce una lista contenente le due liste che ti interessano;
    listNomi, listaDate è una tupla; nell'assegnamento la lista a destra viene convertita in tupla (contenente ancora le due liste), e a listNomi e listaDate fiene assegnata quindi ciascuna lista.
    Questa cosa è fottutamente geniale D:

    Però vorrei precisare che restituisce una Tuple e non una List...

    Edit: ok, l'hai già precisato tu...
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  6. #6
    magnifico!
    in una riga mi hai risolto un problema sul quale ho perso giorni!
    grazie mille!!

  7. #7
    Originariamente inviato da Scara95
    Questa cosa è fottutamente geniale D:
    E ti dirò di più: zip(*a) è una involuzione - ovvero, applicata due volte dà l'identità (zip(*zip(*a))=a).
    Però vorrei precisare che restituisce una Tuple e non una List...
    In realtà, restituisce una lista di tuple.
    codice:
    >>> zip(*a)
    [(u'log_clienti_18-02-13.txt', u'log_articoli_18-02-13.txt', u'log_condizioni_22-02-13.txt'), (1361182998, 1361183029, 1361547587)]
    Originariamente inviato da fermat
    magnifico!
    in una riga mi hai risolto un problema sul quale ho perso giorni!
    grazie mille!!

    Tieni comunque presente che ne potevi uscire facilmente anche in maniera meno elegante (con delle list comprehension o con dei brutali for).
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    si infatti avevo trovato una soluzione alternativa creando in pratica due liste in due funzioni separate, ma di certo non è come la tua soluzione!!

  9. #9
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,589
    Originariamente inviato da MItaly
    In realtà, restituisce una lista di tuple.
    Sì, però parlavo dei risultati dell'assegnazione multipla, comunque hai ragione
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.