Похоже, что вы ищете соответствующие элементы списка на основе списка, предоставленного для time
. Это может быть выполнено с помощью zip
, и для создания вашего словаря вы можете использовать defaultdict
from collections import defaultdict
d = {'time' : [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'x_coordinates': [3, 1, 2, 4, 6, 8, 2, 4, 8, 9],
'y_coordinates': [3, 5, 8, 1, 7, 3, 7, 2, 5, 2]
}
# sets provide faster lookup times than lists
vals = set([2, 6, 8, 10])
new_values = defaultdict(list)
for time, x, y in zip(d['time'], d['x_coordinates'], d['y_coordinates']):
if time in vals:
# you only have to do a single membership test, then you
# simply append the desired values
new_values['time'].append(time)
new_values['x_coordinates'].append(x)
new_values['y_coordinates'].append(y)
defaultdict(<class 'list'>, {'time': [2, 6, 8, 10], 'x_coordinates': [1, 8, 4, 9], 'y_coordinates': [5, 3, 2, 2]})
Преимущество здесь в том, что вы выполняете итерацию только один раз для всех значений