代码之家  ›  专栏  ›  技术社区  ›  Alex Nikitin

根据长度和最小词典排序数组

  •  0
  • Alex Nikitin  · 技术社区  · 3 年前

    我有以下任务

    1. 确定尚未写出的最长字符串
    2. 在没有写出的最长字符串中,按字典顺序选择最小的字符串

    我有以下代码

    strings = ['5', 'z', 'yy', 'y', 'zyz', 'zzz']
    strings = [x for x in strings if not x.isdigit()]
    
    result = []
    for _ in range(0, len(strings)):
        value = max(strings, key=len)
        result.append(strings.pop(strings.index(value)))
    
    print(result)
    

    input array ['5', 'z', 'yy', 'y', 'zyz', 'zzz'] -> output ['zyz', 'zzz', 'yy', 'y', 'z']

    ['zyz', 'zzz', 'yy', 'z', 'y']

    另一个正确的例子 input array [5, dbccdacaac, abcddbbaab, ccaaaccdab, cdaadbcbdc, dcabdabccb] -> output [abcddbbaab, ccaaaccdab, cdaadbcbdc, dbccdacaac, dcabdabccb]

    2 回复  |  直到 3 年前
        1
  •  2
  •   Tamir    3 年前

    您可以使用以下代码:

    sorted(strings,key=lambda x: (-len(x),x))
    
        2
  •  1
  •   Dharman GPuri    3 年前

    只需添加: strings.sort()

    这很管用。