Why can't I iterate over a Counter in Python?

python, python-2.7

Solution

No, they're not. Iterating over a mapping (be it a `collections.Counter` or a `dict` or ...) iterates only over the mapping's keys.

And there's another difference: iterating over the keys of a `Counter` delivers them in no defined order. The order returned by `most_common()` is defined (sorted in reverse order of value).

Problem

Why is that when I try to do the below, I get the `need more than 1 value to unpack`? ``` for key,value in countstr: print key,value for key,value in countstr: ValueError: need more than 1 value to unpack ``` However this works just fine: ``` for key,value in countstr.most_common(): print key,value ``` I don't understand, aren't `countstr` and `countstr.most_common()` equivalent? EDIT: Thanks for the below answers, then I guess what I don't understand is: If `countstr` is a mapping what is `countstr.most_common()`? -- I'm really new to Python, sorry if I am missing something simple here.

Original source