これをpythonicな方法で行う際に助けを求めています。
これまでの私のコード。
プロジェクトで後で使用するオブジェクトにリンクするキーとしてタプルを使用してディクショナリを作成するジェネレータを作成しました。
これを行うためのより良い方法があると確信しています。辞書とリストの理解としての私の試みは成功しませんでした。
app = models.get_app('djangoapp')
appmodels = models.get_models(app)
gen = mapEntGen(appmodels)
d = {}
for x in gen:
d.update(x)
私のオブジェクトがどのように見えるかをより明確にするため。
for x in gen:
print(x)
{('in', 1): <class 'djangoapp.models.entrance01IN'>}
{('out', 1): <class 'djangoapp.models.entrance01OUT'>}
{('in', 2): <class 'djangoapp.models.entrance02IN'>}
{('out', 2): <class 'djangoapp.models.entrance02OUT'>}
...
これらは私の失敗した理解の試みです
{d: aDict for aDict in mapEntGen(appmodels)}
d = {key: value for (key, value) in gen}
d = {key: value for (key, value) in mapEntGen(appmodels[1:])}
問題は、他の 2 つのタイプではなく、既に辞書である可能性が高いと思います。これは、キーと値のペアとして使用できます。
----> 1 for k, v in gen:
2 d[k] = v
3
ValueError: need more than 1 value to unpack
これは、ジェネレーターでオブジェクトのマップとそれらを見つけるためのキーを作成するために使用しているもう 1 つのコードです。
def mapEntGen(EntranceObj = []):
for x in EntranceObj:
thisEnt = (x._meta.verbose_name[10:],
int(x._meta.verbose_name[8:10]))
aDict = {thisEnt : x}
yield aDict
重複しているように見えるかもしれませんが、これまでに試したすべての例のように、私が試したことはありません。