2016-05-26 4 views
0

(これは学習目的のためのものです)クエリ結果を辞書に効率的に展開する方法

for(results) in MySQL_CLASS.cursor: 
     MyDict[results[0]] = '' 

これを書くための短い方法があります:
私はある辞書に変換('a',) , ('b',) , ('c',) を返すクエリは、{a: '',b: '', c: ''} 私はそれを簡単な方法をやっていますか?

+0

あなたが試みることができるの'dict.fromkeys'を使用していますが、まだタプルのインデックスを作成する必要があります。 – jonrsharpe

答えて

1

あなたはdict comprehension使用することができます

>>> results = (('a',) , ('b',) , ('c',)) 
>>> {x[0]: '' for x in results} 
{'a': '', 'c': '', 'b': ''} 
+1

Btwならば、 '{x: '' for x、results}'に短縮することができます。 – alecxe

+0

@alexce:キーがタプルになる原因はありませんか?私は次のようになります: '' >>> {x: '' for x in results} '' ''、' ''、 ':' '、(' a '、):' '、(' b ' 、): ''} ' – niemmi

+0

' x'の後ろにコンマがあることに注目してください - タプルをアンパックします。 – alecxe

0

Dict comprehension based approachが好ましいが、教育目的のために、ここでoperator.itemgettermapdict.fromkeys()を使用することを含む別のオプションであるべきである。

>>> from operator import itemgetter 
>>> l = [('a',) , ('b',) , ('c',)] 
>>> dict.fromkeys(map(itemgetter(0), l), '') 
{'a': '', 'c': '', 'b': ''} 
関連する問題