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

2024-09-27 21:24:29 发布

您现在位置:Python中文网/ 问答频道 /正文

这里prnson.result结果包含从查询提交的数据。我想要预期的产出,但它不来。我使用的是python2.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}


Tags: 数据inforresultrowprintansdbprsnobj
3条回答

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

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

如果你想要你想要的结果

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

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

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

如果结果类型很长,则应转换为int

相关问题 更多 >

    热门问题