我有一个这样的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
因此对数据使用矢量化不是最有效的。
标题>