Хорошо, поэтому я пытаюсь написать метод подсчета ранжированных бюллетеней, известных как Pairwise Comparison. Я должен указать, что я полный новичок, когда дело доходит до написания кода во всех смыслах этого слова. До сих пор мне удалось создать бюллетени (спасибо другому пользователю на этом сайте) и разделить их на ранжированные пары в соответствии с положением. Затем мне нужно разделить их на разные списки, чтобы кандидаты в каждой упорядоченной паре были вместе независимо от ранга (это часть того, как человек определяет, насколько хорошо кандидат делает по сравнению с другими). Вот код, который у меня есть до сих пор:Сравнение Pairwise: сравнение подсписок в одном списке
import itertools
import random
import collections
candidates = ['Trump', 'Cruz', 'Rubio', 'Carson', 'Fiorina']
def simul_ballots(num_voters):
ballots = []
choice = candidates[:]
for _ in range(num_voters):
random.shuffle(choice)
ballots.append(choice[:])
return ballots
n=3
ballots = simul_ballots(n)
i=0
m=0
oPairs = []
while i < n:
for a, b in itertools.combinations(ballots[i], 2):
x = (a,b)
x
ops = list(x)
oPairs.append(ops)
i += 1
oPairs
l = len(oPairs)-1
k=0
j=(k+1)
while (k < l):
print oPairs[k]
while (j < l):
#if all (x in oPairs[i] for x in oPairs[j]):
if (set(oPairs[k])==set(oPairs[j])):
print oPairs[j]
j+=1
k+=1
До сих пор я застрял в этом последнем разделе. Я не могу понять, как сравнивать каждый из подписок с остальными (без повторений, важно иметь такое же количество подписок, как я начал). В этом примере я генерирую только 3 набора голосов для цели для целей тестирования, поэтому должны быть три упорядоченные пары, использующие одни и те же кандидаты, независимо от их позиционирования (мне нужно будет позиционировать позже, чтобы набрать кандидатов). Любые советы или предложения в правильном направлении были бы оценены!