У меня есть два списка
onnet_data = [['one', 'test'], ['two', 'test2'], ['three', 'test3'], ['four', 'test4'], ['five', 'test5']]
elastic_data = [['one', 'test'], ['three', 'test3'], ['six', 'test6'], ['seven', 'test7']]
Я пытаюсь сравнить первые элементы в подсписках onnet_data иastic_data.Я хочу извлечь данные из onnet_data, если они совпадают, как common_data, а затем найти остальные элементы списка в onnet_data.
onnet = [onnet_data[i][0] for i in range(len(onnet_data))]
elastic = [elastic_data[i][0] for i in range(len(elastic_data))]
common = list(set(onnet)& set(elastic))
common_data = []
for i in range(len(common)):
for j in range(len(onnet_data)):
if common[i] == onnet_data[j][0]:
common_data.append(onnet_data[j])
Я пробовал как
from operator import ne
from functools import partial
onnet_remaining = list(filter(partial(ne, common_data), onnet_data))
ожидаемый вывод onnet_remaining
[['two', 'test2'], ['four', 'test4'], ['five', 'test5']]
, но он печатает все данные onnet_data.Я не могу использовать список (set (onnet_data) - set (common_data)), так как это вложенный список.
есть ли способ?Есть ли другой простой способ, поскольку мои данные с len (onnet_data) = 69973 и len (astic_data) = 107730
update: в зависимости от ответа от roadrunner, список немного другой.
onnet_data = [['one', 'test'], ['two', 'test2'], ['three', 'test3'], ['four', 'test4'], ['five', 'test5']]
elastic_data = [['one', 'something'], ['three', 'some3'], ['six', 'some6'], ['seven', 'some7']]