如何用python排序_python - 如何使用sorted()方法对对列表进行排序?

定义一个函数,计算给定的直方图

弦。字符必须出现在列表中

频繁到最频繁。例如,histo(s)是

histo('implemented')。(相同频率的字符必须出现在

要实现排序,请使用python内置函数[('t', 1), ('p', 1), ('n', 1), ('l', 1), ('i', 1), ('d', 1), ('m',

2), ('e', 3)]。

这是我的作品:def keyf(p):

x,y = p

return (y,x)

s = "implemented"

d = {}

for c in s:

d[c] = d.get(c, 0) + 1

dlist = list(d.items())

dlist = sorted(dlist, key = keyf, reverse = False)

在我运行之后,dlist是sorted。问题是具有相同频率的一对中的第一个元素不是按降序排列的,如何解决这个问题?

我试着把

dlist = sorted(dlist, reverse = True)

最后,但没用。

最佳答案

假设你想要的结果是-

[('t',1)、('p',1)、('n',1)、('l',1)、('i',1)、('d',1)、('m',2)、('e',3)]

在这种情况下,需要对两个条件进行排序:频率的升序和alphbet的降序(对于相同的频率)。为此,您需要将第一个频率更改为负频率的降序,使两个排序条件都按降序排列,然后按降序排列完整列表(或者您可以执行相反的操作,并按升序排列完整列表)。示例->>> def keyf(p):

... x,y = p

... return (-y,x)

...

>>> s = "implemented"

>>> d = {}

>>> for c in s:

... d[c] = d.get(c, 0) + 1

...

>>>

>>> dlist = list(d.items())

>>> dlist = sorted(dlist, key = keyf, reverse = True)

>>> print(dlist)

[('t', 1), ('p', 1), ('n', 1), ('l', 1), ('i', 1), ('d', 1), ('m', 2), ('e', 3)]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值