我正在以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:])}
我认为问题很可能是它已经是一本字典,而不是其他两种类型。这可以用作键值对。
----> 1 for k, v in gen:
2 d[k] = v
3
ValueError: need more than 1 value to unpack
这是我用于生成器的其他代码,用于构建对象映射和查找对象的键。
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
它可能看起来像重复,但我尝试过的所有示例都没有按照我迄今为止尝试过的所有示例工作。