次の構文を持つファイルから読み込んでいます。
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 にマップされるべきリストです。リストは正しい順序になっていますが、名前が正しくありません。この辞書の名前を並べ替える方法はありますか?