下面的文本文件显示了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
第一个选项是更改文本文件格式。从你的问题来看,A,B,C ......看起来并不重要。如果删除这些,程序会更容易,例如,如果您将投票存储为JSON或只是一个二维数组本身。
如果由于程序的其他部分而无法更改格式,则可能有效:
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
希望这可以帮助。