对于python中的STV投票程序,如何将投票分数从文本文件存储到2D数组中

问题描述 投票:0回答:1

下面的文本文件显示了5名候选人的投票偏好。投票中共有4张选票。每个选票的第一个数字是候选人A,第二个是候选人B等等......数字1表示该候选人是选民的首选,依此类推,直到第三个选择。没有第四或第五个首选项,因此使用零。我如何将这些分数放在python中的二维数组中,以便输出每个候选分数的列表,例如:

A(1,2,3,0)B(2,3,1,2)C(3,1,0,0)D(0,0,0,3)E(0,0,2,1)

1, 2, 3, 0, 0

2, 3, 1, 0, 0

3, 1, 0, 0, 2

0, 2, 0, 3, 1

python arrays 2d
1个回答
0
投票

Change format

第一个选项是更改文本文件格式。从你的问题来看,A,B,C ......看起来并不重要。如果删除这些,程序会更容易,例如,如果您将投票存储为JSON或只是一个二维数组本身。

Program as is

如果由于程序的其他部分而无法更改格式,则可能有效:

content = ""
votes = [[] for i in range(number_of_candidates)]

with open("file.txt", "r") as text:
    content = text.read()

while content.find('(') != -1:
    start = content.find('(')
    end = content.find(')')

    current_votings = content[start + 1 : end]
    content = content[end + 1:]

    j = 0
    for vote in current_votings.replace(',', ''):
        votes[j].append(int(vote))
        j += 1

希望这可以帮助。

© www.soinside.com 2019 - 2024. All rights reserved.