Given a ranking for a single vote and a wmg for the entire election, calculate the kendall-tau
        distance. a.k.a the number of discordant pairs between the wmg for the vote and the wmg for the
        election. Currently, we expect the vote to be a strict complete ordering over the candidates.

        :ivar list<int> rankList: Contains integer representations of each candidate in order of their
            ranking in a vote, from first to last.
        :ivar dict<int,<dict,<int,int>>> wmgMap: A two-dimensional dictionary that associates integer
            representations of each pair of candidates, cand1 and cand2, with the number of times
            cand1 is ranked above cand2 minus the number of times cand2 is ranked above cand1. The
            dictionary represents a weighted majority graph constructed from an entire election.

def kendallTau(self, orderVector, wmgMap):
        """
        Given a ranking for a single vote and a wmg for the entire election, calculate the kendall-tau
        distance. a.k.a the number of discordant pairs between the wmg for the vote and the wmg for the
        election. Currently, we expect the vote to be a strict complete ordering over the candidates.

        :ivar list<int> rankList: Contains integer representations of each candidate in order of their
            ranking in a vote, from first to last.
        :ivar dict<int,<dict,<int,int>>> wmgMap: A two-dimensional dictionary that associates integer
            representations of each pair of candidates, cand1 and cand2, with the number of times
            cand1 is ranked above cand2 minus the number of times cand2 is ranked above cand1. The
            dictionary represents a weighted majority graph constructed from an entire election.
        """

        discordantPairs = 0.0
        for i in itertools.combinations(orderVector, 2):
            discordantPairs = discordantPairs + max(0, wmgMap[i[1]][i[0]])
        return discordantPairs