2013-12-10 84 views
0

這裏prsnson.result包含來自查詢的數據。我想要預期的產出,但它不會來。我使用蟒2.5PYTHON中的字典輸出不像預期的那樣

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}

+0

相關閱讀:[在字典輸出沒有得到預期在Python(http://stackoverflow.com/questions/20486939/in- dictionary-output-is-getting-getting-as-expected-in-python) –

+0

有沒有這個問題的解決方案,即qurestion – Amy

回答

1

當使用不同的數據庫接口時,從數據庫獲取的整數通常返回爲Long

如果你想輸出你以後

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

也許MySQL documentation的Python可以幫助明確的事情了

+0

OP想要一個字典,而不是多個字典。 –

+0

我不會說永遠 - 這取決於你使用的接口 – markmnl

+0

是的,我不想多個字典...我想要的都在一本字典 – Amy

0

所有的L指的是它的長整數(64位)的形式,所以你的返回值確實是正確的。當你創建一個新的詞典時,它會自動將所有條目轉換爲長格式;而應該使用一個元組或只是打印每一個在循環本身:根據您的prsnobj對象是如何定義的

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

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

,你可能最終得到長整數仍。如果是這樣,您需要回顧定義prsnobj的代碼並檢查它是否正確創建。使用打印輸出來確保對象始終處於您希望的狀態!

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

你的結果類型長,你應該轉院到int

+0

我想要多個字典 – Amy

相關問題