字典输出在PYTHON中没有达到预期的效果

时间:2013-12-10 05:36:24

标签: python dictionary

这里是在字典中的响应,该字典具有存储在字典中的表单值。我的输出是用单独的字典生成的,我不需要单独编写。我只想要一个字典中的所有元素

resp = {}
b = []
for i in range(1, 10):
    resp_i = form.getvalue('opt_%d' %i, '0')
    resp[i] = int(resp_i)
    arg =  {i : resp[i]}
    b.append(arg)
    #print len(b)
for each in b:
    print each

实际输出:{1:1} {2:1} {3:3} {4:1} {5:3} {6:0} {7:0} {8:0} {9:0 }

预期输出:{1:1,2:1,3:3,4:1,5:3,6:0,7:0,8:0,9:0}

2 个答案:

答案 0 :(得分:2)

问题在于:

b = []
for ...
   arg = {i: resp[i]}  # creates a new dict
   b.append(arg)  # adds the dict to the list

您可能正在寻找的是:

b = {}
for ...
    b.update(arg)

当然,这仍然不是最干净的方法。毕竟,为什么要创建所有临时词典?

b = {}
for ...
   b[i] = resp[i]

可以工作,或者你甚至可以将它全部纳入词典理解中。

答案 1 :(得分:0)

def form_getvalue(i):
    return ('0', '1', '1', '3', '1', '3', '0', '0', '0', '0')[i]

resp = {}
for i in range(1, 10):
    resp[i] = int(form_getvalue(i))

print 'resp=%s' % (resp,)

以上的输出是:

resp={1: 1, 2: 1, 3: 3, 4: 1, 5: 3, 6: 0, 7: 0, 8: 0, 9: 0}