Добрый день. У меня есть база с ip адресами и "отпечатками" для каждого ip. Мне необходимо посчитать статистику, сколько раз для разных ip адресов был получен одинаковый отпечаток. Строки с одинаковыми ip надо отбросить, и оставшуюся выборку разбить на группы 100, 200, 300 и т.д. элементов.
Проблема в том, что если мой код запустить несколько раз он выдает разные значения.
def collisions(items):
return len(items) - len(set([x['tlsh'] for x in items])) # Кол-во повторяющихся
all = FingerPrint.objects.all().values('ip', 'tlsh')
print("Всего:", len(all))
unique_ip = list(set([x['ip'] for x in list(all)]))
print("Уникальных:", len(unique_ip))
unique_items = []
for ip in unique_ip:
unique_items.append(all.filter(ip=ip)[0])
# Для графика
x = [100, 200, 300, 400, 500, 600, 700, 738]
y = [collisions(unique_items[:100]),
collisions(unique_items[:200]),
collisions(unique_items[:300]),
collisions(unique_items[:400]),
collisions(unique_items[:500]),
collisions(unique_items[:600]),
collisions(unique_items[:700]),
collisions(unique_items[:738]),]
print(y)
Вывод: