gpt4 book ai didi

python - 有没有办法在追加之后添加更多的字典? Django

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:28 25 4
gpt4 key购买 nike

如果标题有点难理解,请见谅。不太确定如何在一行中解释它。

我想做的是...

其实我有这个代码

    output = []

objs = Model.objects.filter(abc=abc) # this would return a some queryset
for obj in objs:
output.append({
TITLE: obj.title,
TYPE: obj.type,
# I want to add something here which is kind of like, if `obj.type` is 'hello' then print obj.word
})

return output

例如,如果我的 obj.type 是 'hello'

我要

        output.append({
TITLE: obj.title,
TYPE: obj.type,
WORD: obj.word,
})

如果我的 obj.type 是 'world'

我要

        output.append({
TITLE: obj.title,
TYPE: obj.type,
NADA: obj.nada,
})

我想到了做一些事情

    output = []

objs = Model.objects.filter(abc=abc) # this would return a some queryset
for obj in objs:
if obj.type == 'hello':
output.append({
TITLE: obj.title,
TYPE: obj.type,
WORD: obj.word,
})
if obj.type == 'world':
output.append({
TITLE: obj.title,
TYPE: obj.type,
NADA: obj.nada,
})
return output

上面的方法应该可行,但如果有另一种更好的方法,我很想知道另一种方法,因为上面的方法似乎太多余了。

提前感谢您的任何建议

最佳答案

好吧,你所拥有的看起来不错,但如果你真的讨厌代码重复,你总是可以先在 if 之外创建字典。

output = []
objs = Model.objects.filter(abc=abc) # this would return a some queryset
for obj in objs:
current_dict = {
"TITLE": obj.title,
"TYPE": obj.type,
}
if obj.type == "world":
current_dict["NADA"] = obj.nada
else:
current_dict["WORD"] = obj.world

output.append(current_dict)

return output

但是您可能会稍微放慢速度..(尽管不进行第二次检查可以赢得时间 :P)

使用 timeit ( https://docs.python.org/3/library/timeit.html ) 看看“漂亮的代码”是否值得花时间,也许它对您的用例没有太大影响。

此外,对于单线爱好者:

从 python 3.5 开始,类似 Pep 448 中的建议,你可以这样做:

return [
{
**{
"TITLE": obj.title,
"TYPE": obj.type
},
**{"NADA": obj.nada} if obj.type == "word" else **{"WORD": obj.word}
} for obj in Model.objects.filter(abc=abc)
]

也可以放在一行中。也就是说,如果你真的喜欢简洁,但有些人会争辩说它比你拥有的更糟糕。 ^-^

关于python - 有没有办法在追加之后添加更多的字典? Django ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45448947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com