RISOLTO Scelta random di oggetti in un dict python

Stato
Discussione chiusa ad ulteriori risposte.

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
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:

pabloski

Utente Èlite
2,868
916
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
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
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
 

pabloski

Utente Èlite
2,868
916
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.
 
  • Mi piace
Reazioni: Andretti60

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
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
 

Hero467

Utente Attivo
689
404
OS
I use ARCH btw
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.

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili