Skip to main content

Condorcet 是一个使用 condorcet 方法评估投票的实用程序

项目描述

孔多塞

Condorcet 是一个 Python 库,用于使用condorcet 方法评估投票。

安装

pip install condorcet

概要

该库公开了一个类CondorcetEvaluator,该类使用候选人列表和投票列表调用,以实例化评估器。

# Attention! This is pseudo-code!!
CondorcetEvaluator : List[Candidates], List[Votes] -> CondorcetEvaluator

这个实例化的评估器有一个方法get_n_winners,它接受一个(非负)整数 n,并返回一个列表,其中最多包含按顺序排列的前 n 个获胜者,以及其余候选者(那些谁不在获奖名单中)。

最多,因为有时可能没有那么多赢家——一组候选人之间可能存在一个循环。这是返回成对输赢表以及获胜者名单的动机之一。

# Attention! This is pseudo-code!!
CondorcetEvaluator.get_n_winners : int -> List[Candidates], WinsAndLossesTable

这就是为了那个!

快速入门:Rochambeau Games

今年的 Rochambeau Games 有 7 个人对 4 名候选人进行排名——Rock、Paper、Scissors 和相对不为人知的 Dynamite——从 1 到 4,其中某人选票上的候选人 1 将是他们最喜欢的候选人,而 4 则较少首选。

作为选举官员,您将根据孔多塞方法评估他们的选票并宣布结果。

您有以下数据:

candidates = ["Rock", "Paper", "Scissors", "Dynamite"]
votes = [
    {"Rock": 1, "Scissors": 2, "Dynamite": 3, "Paper": 4},
    {"Rock": 1, "Dynamite": 2, "Scissors": 3, "Paper": 4},
    {"Dynamite": 1, "Paper": 2, "Rock": 3, "Scissors": 4},
    {"Paper": 1, "Dynamite": 2, "Rock": 3, "Scissors": 4},
    {"Scissors": 1, "Paper": 2, "Dynamite": 3, "Rock": 4},
    {"Scissors": 1, "Dynamite": 2, "Paper": 3, "Rock": 4},
    {"Rock": 1, "Paper": 2, "Dynamite": 3, "Scissors": 4},
]

您想宣布这四位候选人的表现如何。因此,您使用候选人列表和投票列表实例化一个 condorcet 评估器,并要求它产生四个获胜者,如下所示:

import condorcet

evaluator = condorcet.CondorcetEvaluator(candidates=candidates, votes=votes)
winners, rest_of_table = evaluator.get_n_winners(4)

打印出获奖名单。

print(winners)

# ['Dynamite']

四个获奖者被要求,但只有一个被退回。研究其余候选人的胜负表将阐明根本问题。

print(rest_of_table)

# {
#  'Paper': {
#      'losses': ['Scissors'],
#      'wins': ['Rock']
#   },
#  'Rock': {
#      'losses': ['Paper'],
#      'wins': ['Scissors']
#  },
#  'Scissors': {
#      'losses': ['Rock'],
#      'wins': ['Paper']
#  }
# }

其余候选人的胜负表显示,他们中没有赢家,因为每个人都至少输给了另一个人。

贡献

孔多塞很高兴收到捐款。请提交包含您的贡献的 PR/MR(包括测试,如果它是代码贡献)并让维护者审查和合并。

不要忘记将自己添加到 CONTRIBUTORS.txt

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

condorcet-0.1.1.tar.gz (4.8 kB 查看哈希)

已上传 source

内置分布

condorcet-0.1.1-py3-none-any.whl (5.5 kB 查看哈希)

已上传 py3