gpt4 book ai didi

python - Django/python : loop through a dictionary and add an item to it

转载 作者:行者123 更新时间:2023-12-01 06:10:45 25 4
gpt4 key购买 nike

对于可能简单的问题表示歉意,我已阅读文档,但仍然无法正常工作。

我正在 Django 中进行原始 SQL 查询,该查询很长,因此我不会将其发布在这里 - 只要说它有效并返回结果就足够了。

我想循环遍历查询结果并检查乐队名称是否采用“The [band]”格式并将其重写为“[band], The”。我知道我可以通过 SQL 来完成此操作,但对于大量行来说性能并不是很好,并且我在带模型上有一个函数可以以这种方式排序,但不能将它与原始 SQL 查询一起使用.

这是我的代码:

m = Media.objects.raw('SELECT blah FROM foo')

for index, item in enumerate(m):
if item.bandname_alt:
if item.bandname_alt[:4] == 'The ':
m[index].bandname_sortable = item.bandname_alt[4:] + ', The'

我知道逻辑有效并找到正确的乐队,但不知道如何将 bandname_sortable 字段添加到字典中,以便我可以在 View 中访问它。

有人可以帮我吗?

最佳答案

首先,避免原始 SQL 查询。它们很少是必要的。不过,这是一个单独的问题。

您有两种方法来修改结果。

在模型中。如果您能找到避免原始 SQL 的方法,则可以轻松地向模型添加属性来处理此问题。

class Media( models.Model ):
@property
def clean_band_name( self ):
if self.bandname_alt[:4] == 'The ':
return self.bandname_alt[4:] + ', The'
else:
return self.bandname_alt

您可以使用sorted( list(results), key=lambda x: x.clean_band_name() )

在 View 中。使用扩展结果构建简单的元组列表或命名元组列表。

data = [ (cleanup(item.bandname_alt), item) for item in m ]

由于数据是一个简单的序列,因此可以按每个元组中的第一个元素进行排序。

data.sort()

关于python - Django/python : loop through a dictionary and add an item to it,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6116042/

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