字典输出与PYTHON中的预期不符

时间:2013-12-10 06:26:43

标签: python dictionary

这里prsnson.result包含从查询中提取的数据。我想要预期的输出,但它不会到来。我正在使用python 2.5

for row in prsnobj.result:
    ansdb = {row[0] : row[1]}
    print ansdb

实际:{1L:3L} {2L:4L} {3L:2L} {4L:2L} {5L:2L}

预期:{1:3,2:4,3:2,4:2,5:2}

3 个答案:

答案 0 :(得分:1)

使用不同的数据库接口时,从数据库中提取的整数通常以Long返回。

如果您想要输出

ansdb = {}
for row in prsnobj.result:
    ansdb[int(row[0])] = int(row[1])

也许Python的MySQL documentation可以帮助解决问题

答案 1 :(得分:0)

所有L均表示它是长整数(64位)形式,因此您返回的值确实仍然正确。当你创建一个包含条目的新词典(就像你一样)时,它会自动将所有条目转换为长格式;相反,你应该使用一个元组或只是在循环中打印每个元素:

for row in prsnobj.result:
    print row[0] + " : " + row[1]

for row in prsnobj.result:
    ansdb = (row[0], row[1])
    print ansdb

根据prsnobj对象的定义方式,最终可能会得到长整数。如果是这样,您需要回顾定义prsnobj的代码并检查它是否已正确创建。使用打印输出来确保对象始终处于您希望它处于的状态!

答案 2 :(得分:0)

for row in prsnobj.result:
    ansdb = {int(row[0]) : int(row[1])}
print ansdb

你的结果类型很长,你应该转移到int