這裏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}
這裏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}
當使用不同的數據庫接口時,從數據庫獲取的整數通常返回爲Long
。
如果你想輸出你以後
ansdb = {}
for row in prsnobj.result:
ansdb[int(row[0])] = int(row[1])
也許MySQL documentation的Python可以幫助明確的事情了
所有的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的代碼並檢查它是否正確創建。使用打印輸出來確保對象始終處於您希望的狀態!
for row in prsnobj.result:
ansdb = {int(row[0]) : int(row[1])}
print ansdb
你的結果類型長,你應該轉院到int
我想要多個字典 – Amy
相關閱讀:[在字典輸出沒有得到預期在Python(http://stackoverflow.com/questions/20486939/in- dictionary-output-is-getting-getting-as-expected-in-python) –
有沒有這個問題的解決方案,即qurestion – Amy