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

字典输出与PYTHON中的预期不符,python,dictionary,Python,Dictionary,此处prnson.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}当使用不同的数据库接口时,从数据库中获取的整数通常作为Long返回 如果你想要你想要的输出 ansdb = {

此处prnson.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}

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

如果你想要你想要的输出

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

也许for Python有助于澄清问题,因为L的意思是它是长整数(64位)形式,所以返回的值确实仍然正确。当你创建一个新的字典时,它会自动将所有的条目转换成长格式;相反,您应该使用元组,或者只打印循环本身中的每个元组:

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

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

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

你的结果类型很长,你应该转换为int

相关:这个问题没有解决方案,一个是qurestionOP想要一个dict,而不是多个dict。我不会说总是-这取决于你使用的界面是的,我不想要多个dictionary…我想要的是一个全合一的dictionary人,这里的人开始变得懒惰了。有人会认为,实际的问题是从long中获取int,并在dict中添加唯一的键将是一项简单的任务
for row in prsnobj.result:
    ansdb = {int(row[0]) : int(row[1])}
print ansdb