所有
在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}}
答案 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
。生成器将提供一系列值而不是迭代器中的值。
第一次调用后,它会生成值,然后变为空。当你进行第二次通话时,它会显示一个空的字典。
当您需要在代码中仅使用一次特定值时,可以使用它们。