Я пытаюсь сравнить два списка словаря.Первый словарь имеет ключи «пары» и «проба».Этот словарь обратный, отсортированный по 'prob'.Затем элементы верхнего x-количества первого списка сравниваются со вторым списком, который имеет ключи «пар» и «расстояние».Я только сравниваю, чтобы увидеть, есть ли «пары» из первого списка во втором списке.Если он найден, мне нужно вести учет найденного совпадения.на выходе получается число совпадений
from operator import itemgetter
list1 = [
{"pairs": (1, 107), "prob": .78},
{"pairs": (1, 110), "prob": .98},
{"pairs": (1, 111), "prob": .74},
{"pairs": (1, 114), "prob": .42},
{"pairs": (1, 74), "prob": .24},
{"pairs": (1, 75), "prob": .25},
{"pairs": (10, 24), "prob": .61},
{"pairs": (10, 28), "prob": .40},
{"pairs": (10, 77), "prob": .42},
{"pairs": (10, 78), "prob": .60}]
list2 = [
{"pairs": (1, 100), "distance": 7.507},
{"pairs": (1, 110), "distance": 6.981},
{"pairs": (1, 111), "distance": 6.741},
{"pairs": (1, 114), "distance": 7.432},
{"pairs": (1, 7), "distance": 5.247},
{"pairs": (1, 75), "distance": 7.254},
{"pairs": (11, 24), "distance": 7.611},
{"pairs": (11, 20), "distance": 6.407},
{"pairs": (10, 77), "distance": 6.422},
{"pairs": (10, 78), "distance": 6.607}]
def analyze(expected,actual):
matches = 0
sorted_list = sorted(expected,key=lambda k: k['prob'],reverse=True)
toptenth = len(sorted_list)/10
topfifth = len(sorted_list)/5
tophalf = len(sorted_list)/2
for i in range(toptenth):
if expected[i]..........
print matches
Я не уверен, как сравнить верхнее число элементов в списке один с парами списка 2. Я подумал, что каждый элемент в списке один должен иметь нужный мне диапазон(верхняя десятая, верхняя пятая и верхняя половина), затем итерация по элементу в списке 2. Но я не знаю, имеет ли значение изменяющийся размер между списком 1 и списком 2, и я не знаю, как просто сравнить значение ключа «пары»