Sto provando a creare un dict con chiave come name
e valore come corrispondente User
oggetto.Problemi durante l'utilizzo della comprensione del Dict. NameError: nome globale non definito
Sto usando shell Python da Django shell wrapper python manage.py shell
:
>>> from django.contrib.auth.models import User
>>> names = ['carl', 'jim', 'jack', 'john', 'mark']
# Now using some dict comprehension
>>> u = {name: User.objects.get(username=name) for name in names}
NameError: global name 'User' is not defined
Tuttavia, questo funziona per me:
u = {}
for name in names:
u[name] = User.objects.get(username=name)
E io ottenere il risultato desiderato, che è:
{
'carl': <User: carl>,
'jack': <User: jack>,
'jim' : <User: jim>,
'john': <User: john>,
'mark': <User: mark>
}
Lo so, ci sono altri modi per farlo, ma sono curioso di sapere perché il testo è comprensibile gli ioni non funzionano qui.
Qualche consiglio?
Mi manca qualcosa qui?
Non vedo alcun problema del genere, potrebbe mancare qualcosa! – Rohan
Potrebbe essere che la chiusura del dizionario non ha accesso allo stesso spazio dei nomi della shell. 'U = Utente; u = {nome: U.objects.get (username = nome) per nome nei nomi} 'fai qualche differenza? (chiedendo solo se si tratta di un bug) – Dunes
@Rohan, quali sono i passaggi che stai seguendo? @Dunes, no, questo non funziona, ottengo 'NameError: nome globale 'U' non è definito' –