Ho я могу проверить дубликаты в списке Django Python
Привет мне нужно проверить перекрытие и дублирование строки из данных , я смог это сделать может кто нибудь помочь мне найти дубликат строки .У меня есть эти данные s = [(100, 350,"a"), (125, 145,"a"), (200, 400, "d"), (0, 10, "a")]
и я сделал часть перекрытия но проверка дублирования odf строки мне нужна помощь .
def overlap(a, b) -> bool:
a_start, a_end, _ = a
b_start, b_end, _ = b
return a_start < b_end and b_start < a_end
ls = [(100, 350,"a"), (125, 145,"a"), (200, 400, "d"), (0, 10, "a")]
overlaps = set()
for idx_a in range(len(ls)):
for idx_b in range(len(ls)):
if idx_a != idx_b:
if overlap(ls[idx_a], ls[idx_b]):
overlaps.add(ls[idx_a])
overlaps.add(ls[idx_b])
print(f"Number of overlaps: {len(overlaps)}")
Похоже, что вам не нужно использовать set, если вам нужно только количество перекрытий.
Я бы решил вашу проблему следующим образом:
def is_overlapped(a, b) -> bool: # changed the name for readability
a_start, a_end, _ = a
b_start, b_end, _ = b
return a_start < b_end and b_start < a_end
ls = [(100, 350,"a"), (125, 145,"a"), (200, 400, "d"), (0, 10, "a")]
overlaps = 0 # int instead of set
for idx_a, value_a in enumerate(ls): # this is more pythonic way to access the index and item at the same time
for idx_b, value_b in enumerate(ls):
if idx_a != idx_b:
if is_overlapped(value_a, value_b):
overlaps += 1
print(f"Number of overlaps: {overlaps}")