我正在从具有以下语法的文件中读取:
Akaka D HI -1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 0 0 1 -1 -1 1 -1 1 -1 1 1 -1
Alexander R TN 1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1
我需要创建一个字典,将名称映射到他们的投票列表。在这种情况下,名字是 Akaka 和 Alexander,投票是从 -1、0 和 1 开始的一系列数字。示例输出为:
{'Akaka': [-1 -1 1 1 1 -1 -1 1 1 1 1 1 1 1 -1 1 1 1 -1 1 1 1 1 1 -1 1 -1 -1 1 1 1 1 1 1 0 0 1 -1 -1 1 -1 1 -1 1 1 -1], 'Alexander': [1 1 1 1 1 1 1 1 1 -1 1 -1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1]...,'name':[list of votes in integer form]}
所以这是我使用的代码:
for line in voting_data:
myList.append(line.strip().split(' '))
names = []
votes = []
intVotes = []
votingDict = {}
for i in myList:
names.append(i[0])
for j in names:
votes.append(i[3:])
for k in votes:
intVotes.append([int(v) for v in k])
votingDict = {names[i]:votes[j] for i in range(len(names)) for j in range(len(votes))}
print votingDict
前几个输出返回以下内容(Pyror 是另一个名称,Bunning 也是如此):
{'Pryor': ['-1', '-1', '1', '1', '1', '-1', '-1', '1', '1', '1', '1', '1', '-1', '1', '1', '1', '1', '1', '-1', '1', '1', '1', '1', '1', '1', '1', '-1', '-1', '1', '1', '1', '1', '1', '1', '1', '-1', '1', '-1', '1', '1', '1', '1', '-1', '1', '1', '-1'], 'Bunning': ['-1', '-1', '1', '1', '1', '-1', '-1', '1', '1', '1', '1', '1', '-1', '1', '1', '1', '1', '1', '-1', '1', '1', '1', '1', '1', '1', '1', '-1', '-1', '1', '1', '1', '1', '1', '1', '1', '-1', '1', '-1', '1', '1', '1', '1', '-1', '1', '1', '-1']
我的问题是错误的名称被映射到错误的列表。换句话说,映射到 Pryor 的列表实际上是应该映射到 Alexander 的列表。我的列表顺序正确,但名称不正确。有没有办法对这本字典中的名字进行排序?