基于索引更新Python列表的最快方式



我有一个这样的Python字典-

my_dict = {'Names':['Tom', 'Mariam', 'Lata', 'Tina', 'Abin'], 
'Attendance':[False, False, False, False, False]}

我也有一个Python标记列表,其中索引需要在my_dict['Attendance']中更改为True -

flag_list = [0, 2, 3]

flag_list的基础上,将my_dict修改为-

my_dict = {'Names':['Tom', 'Mariam', 'Lata', 'Tina', 'Abin'], 
'Attendance':[True, False, True, True, False]}

实现这一目标的最快方法是什么?没有循环能做到吗?谢谢你的指导。

使用循环

for index in flag_list:
my_dict['Attendance'][index] = True

一个微优化是只从字典中取出列表一次:

attendance_list = my_dict['Attendance']
for index in flag_list:
attendance_list[index] = True

但除非flag_list有数千个元素长,否则我不会担心。

使用向量化

如果你愿意利用向量化,你可以使用numpy数组:

import numpy as np
my_dict = {'Names':['Tom', 'Mariam', 'Lata', 'Tina', 'Abin'],
'Attendance': np.array([False, False, False, False, False])}
flag_list = [0, 2, 3]
my_dict['Attendance'][flag_list] = True
但是,除非你的数据是very我不会太担心优化这段代码。 <标题>例子计时h1> 于这个数据量,输出是(在我的机器上)
no_numpy                        0.009737916999999985
no_numpy_pre_fetching_list      0.0048406370000000365
using_numpy                     0.009164470000000036

因此对数据使用矢量化不是最有效的。

相关内容

  • 没有找到相关文章

最新更新