Why does sorted() put 9 after 84 and 878?
本问题已经有最佳答案,请猛点这里访问。
1 2 3 4 5 6 7 8 | numbers = ['3','1','6','5','4','4','3','2','1','4','3','5','4','9','84','7','878','6'] counts = dict() for number in numbers: counts[number] = counts.get(number, 0) + 1 print counts for k,v in sorted(counts.items()): print k,v |
输出:
1 2 3 4 5 6 7 8 9 10 11 | {'878': 1, '1': 2, '3': 3, '2': 1, '5': 2, '4': 4, '7': 1, '6': 2, '9': 1, '84': 1} 1 2 2 1 3 3 4 4 5 2 6 2 7 1 84 1 878 1 9 1 |
号
为什么9是最后一个而不是84和878?
因为它在词汇学上比较。878中的"8"在词典编纂顺序中位于"9"之前。您将作为字符串而不是整数进行比较。
因为你已经把你的数字作为字符串放进去了,所以它们是按字典顺序排列的,按照字符串中的字符排列的。所以"9"与"898"中的前"8"进行比较,然后再进行比较。
您可以通过使用一个包(如natsort)获得更自然的排序顺序,该包可以通过pypi安装。
因为你在比较字符串,你想比较数字。