Arbeiten in einem interaktiven Modus, I-Eingang folgende Zuordnungen:isinstance() in dict Verständnis
item = ['keys', 'values', 'items']
get = ['get', 'setdefault']
pop = ['pop', 'popitem']
copy = ['copy', 'fromkeys']
update = ['update']
clear = ['clear']
# my intent result
{'item': ['keys', 'values', 'items'],
'get': ['get', 'setdefault'],
'pop': ['pop', 'popitem'],
'copy': ['copy', 'fromkeys'],
'update': ['update'],
'clear': ['clear']}}
Ich beabsichtige, eine dict von ihnen aus locals()
mit einem dict Verständnis zu holen und Kontrolle geben.
>>> locals()
{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <class '_frozen_importlib.BuiltinImporter'>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, 'item': ['keys', 'values', 'items'], 'get': ['get', 'setdefault'], 'pop': ['pop', 'popitem'], 'copy': ['copy', 'fromkeys'], 'update': ['update'], 'clear': ['clear']}
mein Code:
{k:v for k, v in locals().items if isinstance(v, list)}
TypeError: 'builtin_function_or_method' object is not iterable
ich es feste
In [12]: {k:locals[k] for k in locals() if isinstance(locals()[k], list)}
#Error reports again.
KeyError: '__name__'
Wie es zu beheben?
Ich wünschte, Sie würden finden etwas anderes als dies zu tun. Warum legen Sie diese nicht in Dicts, wie die Listen erstellt werden? Was ist, wenn in Ihrer Umgebung 10 weitere Listen vorhanden sind, die für das zu erstellende Wörterbuch nicht relevant sind? –
+1 zu @ cᴏʟᴅsᴘᴇᴇᴅs Kommentar. Der Zugriff auf diese Eingaben von "Einheimischen" scheint keine gute Idee zu sein. Wenn Sie erklären, warum Sie es so machen, könnte jemand einen anderen/besseren Ansatz bieten. –
Bug markiert: 'Artikel' zu' Artikel() ' –