【问题标题】:Python - How to sort a 2d array by different order for each element?Python - 如何按每个元素的不同顺序对二维数组进行排序?
【发布时间】:2022-11-24 15:23:58
【问题描述】:

我只是想澄清一下我是编码新手。 我正在尝试解决一个问题集,该问题集计算字符串中字符的出现次数并打印出 3 个最常出现的字符

这是我写的代码

    s = input().lower()
    b =  []
    for i in s:
        templst = []
        templst.append(i)
        templst.append(s.count(i))
        if templst not in b:
            b.append(templst)

    final = sorted(b, key=itemgetter(1),reverse=True)
    print (final)
    for i in final[:3]:
        print(*i, sep=" ")

现在如果我给它一个输入

szrmtbttyyaymadobvwniwmozojggfbtswdiocewnqsjrkimhovimghixqryqgzhgbakpncwupcadwvglmupbexijimonxdowqsjinqzytkooacwkchatuwpsoxwvgrrejkukcvyzbkfnzfvrthmtfvmbppkdebswfpspxnelhqnjlgntqzsprmhcnuomrvuyolvzlni

最终的输出将是

[['o', 12], ['m', 11], ['w', 11], ['n', 11], ['t', 9], ['v', 9], ['i', 9], ['p', 9], ['s', 8], ['z', 8], ['r', 8], ['b', 8], ['g', 8], ['k', 8], ['y', 7], ['c', 7], ['q', 7], ['h', 7], ['a', 6], ['j', 6], ['u', 6], ['d', 5], ['f', 5], ['e', 5], ['x', 5], ['l', 5]

所以,出现次数最多的字符是

['o', 12], ['m', 11], ['w', 11], ['n', 11]

代替

['o', 12], ['m', 11], ['n', 11], ['w', 11]

并且由于“m”、“w”和“n”出现的次数相等,我如何在对第二个元素进行反向排序的同时按字母顺序对第一个元素进行排序

【问题讨论】:

    标签: python arrays string list sorting


    【解决方案1】:
    final= Sorted(b, key = lambda e: (e[0], e[1])) # you need to specify multiple conditions for the sort
    

    【讨论】:

      猜你喜欢
      • 2021-07-25
      • 2021-12-06
      • 2019-09-01
      • 1970-01-01
      • 2013-08-17
      • 1970-01-01
      • 2011-02-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多