第一个dict()后内容为null

时间:2015-07-12 11:34:08

标签: python django dictionary

所有

在Django中,我使用这些单词来获取dict(q_a),但是在第一个dict()之后,第二个是null,python是如何工作的?

type of q_a is <generator object _iteritems at 0x10c97ac30>
first dict(q_a) : {u'csrfmiddlewaretoken': u'KQA7K6MCwZWFsXO59pAOYOMyD92O9tYq', u'\u5b66\u9662': u'ss', u'\u59d3\u540d': u'ww', u'\u624b\u673a\u53f7\u7801': u''}
second dict(q_a): {}

以下是打印输出:

{{1}}

3 个答案:

答案 0 :(得分:2)

request.POST.iteritems()返回一个生成器对象,在第一次dict调用后它已用尽。

if request.method == "POST":
    q_a = dict(request.POST.iteritems())
    print "first dict(q_a) : %s " % q_a
    print "second dict(q_a): %s " % q_a

答案 1 :(得分:0)

q_a.iteritems()不是字典,它是一个生成器(如印刷所说)。您可以在Python Wiki上阅读有关它们的更多信息,但一般情况下,您只能对它们进行一次迭代。之后,当您尝试再次迭代它们时,它们将引发StopIteration(正如您使用dict(q_a)在最后一行上隐式执行),这会停止循环。这就是为什么你的电话会导致空字典的原因。

答案 2 :(得分:0)

.iteritems()会返回iterator个对象。

generator也是iterator。生成器将提供一系列值而不是迭代器中的值。

第一次调用后,它会生成值,然后变为空。当你进行第二次通话时,它会显示一个空的字典。

当您需要在代码中仅使用一次特定值时,可以使用它们。