<p>排成一行:</p>
<pre><code>c = "abcabcdefdefjhi"
print "\n".join(["%s: %s" %( e, ", ".join([ str(j) for j, e2 in enumerate(c) if e2==e]) ) for i, e in enumerate(sorted(set(c)))])
</code></pre>
<p>1)不重复列表:</p>
<pre><code>sorted(set(c))
</code></pre>
<blockquote>
<p>['a', 'b', 'c', 'd', 'e', 'f', 'h', 'i', 'j']</p>
</blockquote>
<p>2)职位列表</p>
<pre><code>[ (i, e) for i, e in enumerate(sorted(set(c)))]
</code></pre>
<blockquote>
<p>[(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), ... , (6, 'h'), (7, 'i'), (8, 'j')]</p>
</blockquote>
<p>3)按字母分组:</p>
<pre><code>[( e, [ j for j, e2 in enumerate(c) if e2==e] ) for i, e in enumerate(sorted(set(c)))]
</code></pre>
<blockquote>
<p>[('a', [0, 3]), ('b', [1, 4]), ('c', [2, 5]), ..., ('i', [14]), ('j', [12])]</p>
</blockquote>
<p>4)减少一行</p>
<pre><code>print "\n".join(["%s: %s" %( e, ", ".join([ str(j) for j, e2 in enumerate(c) if e2==e]) ) for i, e in enumerate(sorted(set(c)))])
</code></pre>
<blockquote>
<p>a: 0, 3</p>
<p>b: 1, 4</p>
<p>c: 2, 5</p>
<p>d: 6, 9</p>
<p>e: 7, 10</p>
<p>f: 8, 11</p>
<p>h: 13</p>
<p>i: 14</p>
<p>j: 12</p>
</blockquote>