繁体   English   中英

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

[英]Dictionary output is not as expected in PYTHON

此处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,4,3:2,4:2,5:2}

当使用不同的数据库接口时,从数据库获取的整数通常返回为Long

如果您想要输出,则需要

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

也许Python的MySQL文档可以帮助您解决问题

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的代码,并检查它是否正确创建。 使用打印输出来确保对象始终处于您希望其处于的状态!

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

如果结果类型很长,则应该转移到int

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM