9

mysqldbを使用してmysqlデータベースに接続しており、変数でメタデータ/列を取得し、別の変数でデータ/行を取得しています。次に、リストとタプルをdictに統合し、順序を保持する必要があります。口述は無秩序であることを私は知っていますが、これに代わるものはありますか?

cursor.description = ['userid', 'cid', 'mid', 'did', 'msid']
data = (29L, 35L, None, '', None)

result = {}
for i in data:
    result.update = dict(zip(cols, i))

期待される結果

result = {'userid': 29L, 'cid': 35L, 'mid': None, 'did': '', 'msid': None}
4

2 に答える 2

16

:を使用しOrderedDictます

from collections import OrderedDict

result = OrderedDict(zip(cursor.description, data))

例:

>>> from collections import OrderedDict
>>> cols = ['userid', 'cid', 'mid', 'did', 'msid']
>>> data = (29L, 35L, None, '', None)
>>> result = OrderedDict(zip(cols, data))
>>> result
OrderedDict([('userid', 29L), ('cid', 35L), ('mid', None), ('did', ''), ('msid', None)])
>>> result['userid']
29L
>>> result['cid']
35L
>>> list(result)
['userid', 'cid', 'mid', 'did', 'msid']

CPython3.6以降およびPython3.7以降では、通常dictのsは挿入順に並べ替えられるため、コードが適切なバージョンで実行されることがわかっている場合は、dict代わりにここで使用できます。OrderedDict

Python 3.7以降のみ(またはCPythonではPython 3.6):

>>> cols = ['userid', 'cid', 'mid', 'did', 'msid']
>>> data = (29, 35, None, '', None)
>>> result = dict(zip(cols, data))
>>> result
{'userid': 29, 'cid': 35, 'mid': None, 'did': '', 'msid': None}
>>> result['userid']
29
>>> result['cid']
35
>>> list(result)
['userid', 'cid', 'mid', 'did', 'msid']
于 2013-03-12T21:55:36.823 に答える
1

口述を忘れる

>>> cols=['userid', 'cid', 'mid', 'did', 'msid']
>>> data = (29L, 35L, None, '', None)
>>> zip(cols,data)
[('userid', 29L), ('cid', 35L), ('mid', None), ('did', ''), ('msid', None)]

結果セットがたくさんある場合は、最初に配列を設定してappendから、それに配列を設定します

>>> myarray.append(zip(cols,data))
于 2013-03-12T22:00:58.907 に答える