RISOLTO Scelta random di oggetti in un dict python

Pubblicità
Stato
Discussione chiusa ad ulteriori risposte.

Hero467

Utente Attivo
Messaggi
695
Reazioni
406
Punteggio
75
Ciao a tutti,
avrei bisogno che in un dizionario con la struttura "'stringa': "lista" venga estratto casualmente una delle stringhe e poi in un print separato vorrei mettere la lista corrispondente a quella stringa.
Come posso fare?
 
Ultima modifica:
Python:
import random
random.sample(list(dizionario),1)[0]

così ottieni la stringa, che poi puoi usare direttamente per accedere alla lista corrispondente

notare che potresti benissimo fare

Python:
dizionario.popitem()

ed ottenere la stringa e la lista associata

questo perchè i dizionari non sono ordinati e quindi pop non restituisce mai lo stesso elemento, anche partendo dalle stesse condizioni iniziali

inutile dire che usare generatori di numeri casuali è sicuramente più casuale che affidarsi al non ordinamento di un dizionario, anche se pop è più performante
 
Python:
import random
random.sample(list(dizionario),1)[0]

così ottieni la stringa, che poi puoi usare direttamente per accedere alla lista corrispondente

notare che potresti benissimo fare

Python:
dizionario.popitem()

ed ottenere la stringa e la lista associata

questo perchè i dizionari non sono ordinati e quindi pop non restituisce mai lo stesso elemento, anche partendo dalle stesse condizioni iniziali

inutile dire che usare generatori di numeri casuali è sicuramente più casuale che affidarsi al non ordinamento di un dizionario, anche se pop è più performante
Ho appena provato il primo metodo, ma mi restituisce l'errore

Codice:
Traceback (most recent call last):
  File "/home/ricky/Scaricati/Films.py", line 32, in <module>
    print(sample(list(genres), 1))[0]
TypeError: 'NoneType' object is not subscriptable
per poi stamparmi la stringa
 
Pubblica il codice completo dobbiamo vedere come hai dichiarato e inizializzato ‘dizionario’
 
Ho appena provato il primo metodo, ma mi restituisce l'errore

Codice:
Traceback (most recent call last):
  File "/home/ricky/Scaricati/Films.py", line 32, in <module>
    print(sample(list(genres), 1))[0]
TypeError: 'NoneType' object is not subscriptable
per poi stamparmi la stringa
NoneType significa che non hai definito qualcosa. Posta il codice e vediamo.
 
Ecco il codice:
Python:
from random import *

genres = {
    'animazione': ['animazione1','animazione2','animazione3',],
    'avventura': ['avventura1', 'avventura2','avventura3'],
    'azione': ['azione1', 'azione2', 'azione3'],
    'biografico': ['biografico1','biografico2','biografico3'],
    'giallo': ['giallo1', 'giallo2', 'giallo3'],
    'grottesco': ['grottesco1','grottesco2','grottesco3'],
    'mitologico': ['mitologico1','mitologico2','mitologico3'],
    'noir': ['noir1', 'noir2', 'noir3'],
    'politico': ['politico1', 'politico2', 'politico3'],
    'poliziesco': ['poliziesco1','poliziesco2','poliziesco3'],
    'sentimentale': ['sentimentale1','sentimentale2','sentimentale3'],
    'spionaggio': ['spionggio1', 'spionggio2', 'spionggio3'],
    'sportivo': ['sportivo1','sportivo2', 'sportivo3'],
    'storico': ['storico1', 'storico2','storico3'],
    'commedia': ['commedia1', 'commedia2', 'commedia3'],
    'drammatico': ['drammatico1','drammatico2', 'drammatico3'],
    'erotico': ['erotico1', 'erotico2', 'erotico3'],
    'pornografico': ['pornografico1', 'pornografico2', 'pornografico3'],
    'fantascienza': ['fantascienza1', 'fantascienza2', 'fantascienza3'],
    'fantasy': ['fantasy1', 'fantasy2', 'fantasy3'],
    'guerra': ['guerra1', 'guerra2', 'guerra3'],
    'horror': ['horror1', 'horror2', 'horror3'],
    'thriller': ['thriller1', 'thriller2', 'thriller3'],
    'western': ['western1', 'western2', 'western3']
}

come potete vedere non è altro che un dizionario, nessun'altra istruzione
 
Alla fine non serve più, ho risolto il problema dell'errore mettendo un try con un except con un pass, in modo che mi dia la stringa e non mi dia errore. Non è molto ortodosso, ma non mi è venuto in mente altro ?

Ovviamente se avete consigli sono ben accetti :D
 
Stato
Discussione chiusa ad ulteriori risposte.
Pubblicità
Pubblicità
Indietro
Top