我在Python 3中有一长串名称 - 值对,它们代表数据库中的一行。由于每行的属性数量相当大,我想知道是否有更快或更多的pythonic方式将其转换为dict而不是以下:
name_value_pairs = [{'Name':'id', 'Value':1}, {'Name':'age', 'Value':22}]
for pair in name_value_pairs:
result[pair['Name']] = pair['Value']
答案 0 :(得分:2)
使用词典理解:
result = dict( (item['Name'], item['Value']) for item in name_value_pairs)
答案 1 :(得分:1)
我建议使用较新的字典理解语法:
{item['Name']: item['Value'] for item in name_value_pairs}
已经在@instabrite的评论中提到过。
它可用since Python 2.7 (2010)并且速度更快。一些分析:
使用dict()
构造函数:dict( (item['Name'], item['Value']) for item in name_value_pairs)
>>> import timeit
>>> timeit.timeit("dict( (item['Name'], item['Value']) for item in name_value_pairs)",
... setup="name_value_pairs = [{'Name':'id', 'Value':1}, {'Name':'age', 'Value':22}]")
0.6748202270264301
使用dict理解:{item['Name']: item['Value'] for item in name_value_pairs}
>>> timeit.timeit("{item['Name']: item['Value'] for item in name_value_pairs}",
... setup="name_value_pairs = [{'Name':'id', 'Value':1}, {'Name':'age', 'Value':22}]")
0.2638828816925525
正如您所看到的,字典理解速度提高了2.5倍。而imho,更多Pythonic 和更可读的。