python - django zip 不等列表

标签 python django list zip

我有 2 个查询,您可以找到如下打印结果。

<QuerySet [{'swtype': 1}, {'swtype': 2}]>
 <QuerySet ['201;203;205', '207;208']>

我在 stackoverflow 上查看了一些命令,用于按照以下方式对这些列表进行配对。

pair = itertools.zip_longest(swtype, p_list)

但是输出不是我想要的。好像是

1:201
2:203
none:205
none:207
none:208

我追求的是:

1:201
none:203
none:205
2:207
none:208

这是否可能通过压缩或我应该创建 2 个单独的循环。 如果我创建了 2 个单独的循环,那么我就会遇到其他问题。

最佳答案

我认为您对第二个查询集做了一些处理,用分号 (;) 将其拆分为子字符串。这样做的问题是结构会丢失,因此您 zip 就好像它们总是独立的元素一样。但是,您可以保留结构并使用:

from itertools import chain, zip_longest

qs1 = [{'swtype': 1}, {'swtype': 2}]  # first queryset
qs2 = ['201;203;205', '207;208']      # second queryset

result = chain.from_iterable(
    zip_longest((qi1['swtype'],), qi2.split(';')) for qi1, qi2 in zip(qs1, qs2)
)

因此,我们在这里迭代两个查询集 qi1qi2,然后我们执行一个zip_longest qi1[swtype](包装成一个单例元组,因为我们需要一个可迭代对象,我们将 qi2 的字符串拆分为 的子字符串qi2.split(';')).然后我们将“subzips链接在一起。

但是请注意,如果这两个查询集源自相似的查询,我建议您将这两个查询合并为一个。这更安全,因为它保证顺序匹配,而且通常(有一些异常(exception)),它也更有效。

关于python - django zip 不等列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51478288/

相关文章:

Django FileField 默认文件

django - AH01630 : client denied by server configuration in Django

django - 如何使用 django 使用 datefield 检索数据?

python - 选择给定值并忽略列表中的非给定值

python - 如何简单地用python处理请求

python - 为数据框中的每一行创建条形图的子图

python - 在 Windows 上的 Fabric 中运行 local() 命令

python - 计算其中一个引用的三个项目的最快方法(使用 python)?

javascript - 如何在 Sencha Touch 中添加数据到列表动态

c# - MySQL IN 子句 : How can I get multiple rows when I use a same value multiple times?