将两个列表合并到一个字典中时保留排序

时间:2013-03-12 21:53:36

标签: python list dictionary tuples mysql-python

我使用mysqldb连接到mysql数据库,我获取变量中的元数据/列和另一个中的数据/行。现在我必须将列表和元组合并为一个字典并保留顺序。我知道dicts是无序的,但除此之外还有其他选择吗?

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}

2 个答案:

答案 0 :(得分:10)

使用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']

答案 1 :(得分: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))