Итак, я пытаюсь написать метод подсчета рейтинговых бюллетеней, известный как парное сравнение. Я должен уточнить, что я полный новичок, когда дело доходит до написания кода во всех смыслах этого слова. На данный момент мне удалось создать бюллетени (благодаря другому пользователю на этом сайте) и разделить их на ранжированные пары в соответствии с положением. Затем мне нужно разделить их на разные списки, чтобы кандидаты в каждой упорядоченной паре были вместе независимо от ранга (это часть того, как человек определяет, насколько хорошо кандидат работает по сравнению с другими). Вот код, который у меня есть до сих пор:
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 набора голосов для цели для целей тестирования, поэтому должно быть три упорядоченных пары, использующих одних и тех же кандидатов, независимо от позиционирования (позже мне понадобится позиционирование, чтобы оценить кандидатов) Буду очень признателен за любые советы или предложения в правильном направлении!