假设我有一个dict:d={'Abc':5,'Jack':4,'amy':9,'Tom':0,'Abc':5}
如果我想写一个函数,如果我把这个函数传递给内置的sort函数,比如list(d).sort(function),sort函数会根据值对列表进行排序,如果有相同的值,则按它们的键(字母顺序)排序。所以,在本例中,d={'Abc':5,'Jack':4,'amy':9,'Tom':0,'Abc':5,'TAM':0}返回['amy','Abc','Abc','Jack','TAM','Tom'] 函数应该如下所示:
def arrange_items(something, thing,**may be a function**):
if something < thing:
return -1
elif something > thing:
return 1
etc
如果我打个电话_列表.排序(整理物品),我应该把整理好的清单拿回来
提前谢谢你
规范修改(另一个问题): 如果我有twitter用户名的dict,dict的格式如下:
^{pr2}$用户的人气是指关注这个特定用户的人数,在上面的例子中,MiniT的流行度至少是一个b/c至少有一个用户关注MiniT。在
假设我有一个twitter用户名列表,比如L1=['JonhZ','MiniT',等等],我想根据用户的流行程度对L1进行排序(高人气优先)。dict已在全局命名空间中定义(我们可以直接访问dict)。此排序函数的要求是使用L1.sort(pass_function) 如何编写pass_函数,使sort根据用户的流行程度自动对L1排序。在
谢谢你的帮助
使用list(d).sort(function)无法实现这一点,因为您将得到一个带有字典键的列表。您可以通过其他方法实现您的目标:
此方法将字典转换为(键,值)元组的列表。然后l1按值排序,l2按键排序。因为python有一个稳定的排序算法,所以对于相同的键,值的顺序是保持不变的。在
编辑:Ignacio Vazquez Abrar的方法类似,但更优雅,因为列表只需排序一次。在
编辑:
(我拒绝使用“dict”这个名字,因为它隐藏了一个内置项,而隐藏它是愚蠢的)
^{pr2}$相关问题 更多 >
编程相关推荐