我有一个这样的 .fetchall() 结果:
t = (('oranges',), ('apples',), ('pears',))
我如何把它变成这样的字典:
d = {'oranges':None, 'apples':None, 'pears':None}
我有一个这样的 .fetchall() 结果:
t = (('oranges',), ('apples',), ('pears',))
我如何把它变成这样的字典:
d = {'oranges':None, 'apples':None, 'pears':None}
>>> t = (('oranges',), ('apples',), ('pears',)
>>> dict((item[0], None) for item in t)
{'pears': None, 'apples': None, 'oranges': None}
在 Python2.7 或更高版本中,最快的方法是使用字典推导:
In [12]: {item[0]: None for item in t}
Out[12]: {'apples': None, 'oranges': None, 'pears': None}
对于旧版本的 Python,有 fromkeys 方法:
In [6]: dict.fromkeys([row[0] for row in t])
Out[6]: {'apples': None, 'oranges': None, 'pears': None}
那么如何决定使用哪一个呢?如果所有方法都具有同等可读性,我会选择最快的方法:
在 [17] 中:t = [(str(i),) for i in range(10000)]
In [18]: %timeit dict((item[0], None) for item in t)
100 loops, best of 3: 3.36 ms per loop
In [19]: %timeit dict.fromkeys([row[0] for row in t])
100 loops, best of 3: 2.54 ms per loop
In [20]: %timeit {item[0]: None for item in t}
100 loops, best of 3: 2.24 ms per loop