这是一个分解列表并将其分类为元组的函数,第一个对象是项目,第二个是它出现的次数。
def top(item, default=None):
if default is None: default = len(item)
if type(item) is list:
ob = {}
for x in item:
a = ob.get(x, 0)
ob[x] = a+1
return sorted(ob.items()[:default],key=lambda x: x[1])
else: raise TypeError, "not a list"
如果我直接在脚本中调用此函数,则会将其写入,如下所示:
print top([i for i in "aaaabcdeee"])
#['a', 'a', 'a', 'a', 'b', 'c', 'd', 'e', 'e', 'e']
它会正确打印出来。像这样:
[('c', 1), ('b', 1), ('d', 1), ('e', 3), ('a', 4)]
但是,如果我创建一个新脚本并导入该函数的函数,则会以不同方式打印出来:
[('a', 4), ('c', 1), ('b', 1), ('e', 3), ('d', 1)]
正如您在上面的示例中所看到的,对象未正确排序。我该怎么办?
答案 0 :(得分:2)
return sorted(ob.items()[:default],key=lambda x: x[1])
糟糕。
return sorted(ob.items(), key=lambda x: x[1])[:default]