Salve a tutti, il mio intento è quello di scrivere un piccolo programma che mi 
consente di inizializzare a zero un'intera matrice che poi risulterà essere una 
sorta di "tabella" per vedere quali registi e attori hanno lavorato insieme, 
indipendentemente dal film, descritti dal file prova.json. Se un attore e un 
regista qualunque hanno lavorato insieme, quindi non per forza nello stesso 
film, sulla matrice, al posto dello zero, dovrei inserire 1. Perciò, 1 == True 
and 0 == False (0, lasciato, a seguito dell'inizializzazione, nella matrice). 
Quello che manca, è proprio un collegamento tra la lettura degli 
attori/registi, che hanno recitato insieme, dal file json, e la sovrascrittura 
degli 1 (True) in matrice. In allegato i file di lavorazione. Il file Excel non 
va integrato nel progetto. E' solo uno schema per capire come dovrà funzionare 
il codice.
RingraziandoVi per la Vostra attenzione,cordiali saluti.Giuseppe Caminiti  
                                          

Attachment: Matrice.xlsx
Description: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet

# -*- coding: utf-8 -*-
import json                                  
def actorDirGraph(filmfile):
    with open(filmfile, 'rU') as f:                                           # apri il file json e nominalo come "f"
        film = json.load(f)                                                    # carica il suo contenuto e assegnalo alla variabile "film"  
    set_actors = set()                                                         # dichiara un insieme set e due liste vuote per i registi e gli attori
    lista_directors = []
    lista_actors = []
    
    for k, v in film.items():                                                 # itera sulle coppie chiave - valore, (film - registi/attori) 
        for actor in v['ACTORS']:                                             # itera su ogni attore nel file json e mettilo nell'insieme set
            set_actors.add(actor)                                              # PRIMA PROVA, con l'insieme set, per elimimare i doppioni degli attori
    
    
        for director in v['DIRECTORS']:                                       # itera su ogni regista nel file json e mettilo nella lista nuova per i registi
            lista_directors += [director]
    
    
        for actor_inSet in set_actors:                                        # itera su ogni attore nell'insieme set e mettilo nella nuova lista per gli attori
            lista_actors += [actor_inSet]
    
            
            elimina(lista_actors, lista_directors, film)                       # chiamata a un'altra funzione, elimina, scritta esternamente     
            
            
def elimina(lista_actors, lista_directors, film):                              # SECONDA PROVA, funzione che serve a levare i doppioni all'interno della lista degli attori  
    for k, v in film.items():                                                  # itera sulle coppie chiave - valore, (film - registi/attori) 
        for i in lista_actors:                                                 # itera su ogni attore nella lista degli attori 
            if lista_actors.count(i) > 1:                                       # se un attore è ripetuto più di una volta
                lista_actors.remove(i)                                          # rimuovi i doppioni
                elimina(lista_actors, lista_directors, film)                    # esegui il processo ricorsivamente
        
        
        #matrice = [range(0, len(lista_actors))] * len(lista_directors)           primo modo per costruire la matrice (commentato)
        
        righe = []                                                               # secondo modo per costruire la matrice, con ciclo for
        
        for x in range(0, len(lista_actors)):                                  # itera su ogni elemento dalla lista che va da 0 alla lunghezza della lista degli attori (crea tante celle quante sono le posizioni della lista degli attori)
            colonne = []                                                        # definisci una lista nuova per le colonne                                                    
            
            for j in range(0, len(lista_directors)):                           # itera su ogni elemento dalla lista che va da 0 alla lunghezza della lista dei registi (crea tante celle quante sono le posizioni della lista dei registi)                         
                colonne.append(0)                                               # inizializza la matrice, cioè ad ogni elemento, sostituisci il valore zero
            righe.append(colonne)                                               # aggiungi le colonne alle righe per formare la matrice
        
                                                                                                                                                                                                  
        print righe                                                            # stampa la matrice                                                                                                                                                                                                                                                                                                                                                        

actorDirGraph('prova.json')                                                     # chiamata alla funzione actorDirGraph, file di input prova.json

Attachment: prova.json
Description: Binary data

_______________________________________________
Python mailing list
Python@lists.python.it
http://lists.python.it/mailman/listinfo/python

Rispondere a