<p><strong>按OP所需的方式获取输出的代码:</strong></p>
<pre><code>pos_grade = {'pos': [], 'grds': []}
y = [0.0, 0.97, 0.0, 0.0, 0.0, 0.82, 0.66, 0.0, 0.0, 0.90, 0.0, 0.0, 0.82]
for i, x in enumerate(y):
if x != 0.0:
pos_grade['pos'].append(i)
pos_grade['grds'].append(x)
print pos_grade
</code></pre>
<p><strong>输出:</strong></p>
^{pr2}$
<hr/>
<p>如果你只想使用字典来获得分数和数值,可以使用以下方法。在</p>
<pre><code>pos_grade = {}
y = [0.0, 0.97, 0.0, 0.0, 0.0, 0.82, 0.66, 0.0, 0.0, 0.90, 0.0, 0.0]
i = 0
for x in y:
if x != 0.0:
pos_grade[x] = i
i += 1
print pos_grade
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>{0.9: 9, 0.97: 1, 0.66: 6, 0.82: 5}
</code></pre>
<hr/>
<p>编辑:</p>
<p>如果列表中的等级存在重复值:</p>
<pre><code>from collections import defaultdict
pos_grade = defaultdict(list)
y = [0.0, 0.97, 0.0, 0.0, 0.0, 0.82, 0.66, 0.0, 0.0, 0.90, 0.0, 0.0, 0.82]
i = 0
for x in y:
if x != 0.0:
pos_grade[x].append(i)
i += 1
print pos_grade
</code></pre>
<p><strong>输出:</strong></p>
<pre><code>defaultdict(<type 'list'>, {0.9: [9], 0.97: [1], 0.66: [6], 0.82: [5, 12]})
</code></pre>
<hr/>
<p>使用<code>enumerate</code>的代码:</p>
<pre><code>from collections import defaultdict
pos_grade = defaultdict(list)
y = [0.0, 0.97, 0.0, 0.0, 0.0, 0.82, 0.66, 0.0, 0.0, 0.90, 0.0, 0.0, 0.82]
for i, x in enumerate(y):
if x != 0.0:
pos_grade[x].append(i)
print pos_grade
</code></pre>