擅长:python、mysql、java
<p>让我们从显而易见的开始,这:</p>
<pre><code>dictionary= {a,b,c,a,a,b,b,b,b,c,a,w,w,p,r}
</code></pre>
<p>不是字典。它是一个<code>set</code>,并且<code>set</code>不保留重复项。你可能打算声明为<code>list</code>或<code>tuple</code>。</p>
<p>现在,来谈谈你的问题:你需要实现一些东西来计算你收藏的物品。你的实现并不能真正做到这一点。你可以自己滚,但实际上你应该使用一个<code>Counter</code>:</p>
<pre><code>my_list = ['a','b','c','a','a','b','b','b','b','c','a','w','w','p','r']
from collections import Counter
c = Counter(my_list)
c
Out[19]: Counter({'b': 5, 'a': 4, 'c': 2, 'w': 2, 'p': 1, 'r': 1})
</code></pre>
<p>接下来的问题是:字典(所有类型的,包括<code>Counter</code>对象)不保留键顺序。您需要调用dict的<code>items()</code>上的<code>sorted</code>,这是一个元组列表,然后遍历它来进行打印。</p>
<pre><code>for k,v in sorted(c.items()):
print('{}: {}'.format(k,v))
a: 4
b: 5
c: 2
p: 1
r: 1
w: 2
</code></pre>