2017-05-09 12 views
0

私はSQLクエリを実行し、結果をdictにフォーマットするこのコードに頭を悩ましています。しかし、結果はリストの代わりに辞書として返され、なぜ私が理解することはできません。 [{「列1」:「123」、「名前」関数のようなきれいにフォーマットSQLの結果を返しますなぜPython 3xがdictではなくリストを返すのですか?

def runSqlQuery(sqlCommand, connectString="xxxxxxxxxxxxxxx"): 
    connection = cx_Oracle.connect(connectString) 
    cursor = connection.cursor() 
    cursor.execute(sqlCommand) 
    #use the cursor column descriptions to create readable dict of results 
    columns = [i[0] for i in cursor.description] 
    result = [dict(zip(columns, row)) for row in cursor] 
    print (type(result)) 
    return result 

: 'Bob'、 'Age': '39'}]

しかし、なぜ私はdictキーワードを使用しているのですか?それは[]の括弧のためですか?

+4

ある - だから、結果は、私はあなたがこの行

all([isinstance(item, dict) for item in result]) 

True結果を生成することがわかりになると思いdict

listです、 '[]'はリストの理解度を作成します。 –

+1

リスト内包表記の代わりに辞書内包表記を使用することを意味しましたか? 'dict(カーソルの行のzip(列、行))' – ayhan

答えて

2
result = [dict(zip(columns, row)) for row in cursor] 

この行はリスト内包である - それはcursorrow Sを反復し、各行の辞書を作成することにより、リストを作成します。つまり、リストの各項目はイエスdict

+3

'=='ではなく 'is'で型を比較す​​る方が良いです。 (サブクラスを処理するので)さらに良いisinstance(item、dict)です。 – jwodder

+0

良い点、固定。ありがとう! –

関連する問題