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
查看哈希)
内置分布
condorcet-0.1.1-py3-none-any.whl
(5.5 kB
查看哈希)