Próbuję utworzyć klucz z kluczem jako name
i wartość jako odpowiadający obiekt User
.Problemy podczas korzystania ze słów Dict. NameError: nazwa globalna nie jest zdefiniowana
Używam Pythona powłokę Django powłoki owijki 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
jednak działa to dla mnie:
u = {}
for name in names:
u[name] = User.objects.get(username=name)
i uzyskać pożądany wynik, który jest:
{
'carl': <User: carl>,
'jack': <User: jack>,
'jim' : <User: jim>,
'john': <User: john>,
'mark': <User: mark>
}
Wiem, są inne sposoby, aby to osiągnąć, ale jestem ciekawy, dlaczego dyktuje to zrozumienie jony nie działają tutaj.
Jakieś wskazówki?
Czy brakuje mi tutaj czegoś?
Nie widzę żadnego problemu, być może czegoś brakuje! – Rohan
Może być tak, że zamknięcie słownika nie uzyskuje dostępu do tej samej przestrzeni nazw co powłoka. Czy 'U = Użytkownik; u = {nazwa: U.objects.get (nazwa_użytkownika = nazwa) dla nazwy w nazwach} 'czy masz jakąkolwiek różnicę? (tylko zastanawiam się, czy to błąd) – Dunes
@Rohan, jakie kroki podążasz? @Dunes, nie, to też nie działa, otrzymuję komunikat "NameError: nazwa globalna" U "nie jest zdefiniowana" –