我有以下格式的字符串列表:
['b-3','a-2','c-4','d-2']
需要以这样的方式排序:列表按数字排序(后面 - )。如果数字相等,则需要按字母顺序对字符串进行排序。输出应该是
['a-2','d-2','b-3','c-4']
我可以使用比较器/可比较的方式在JAVA中轻松实现。如何通过在python中编写函数来实现这一点。
list.sort(key= )
import sys
from collections import Counter, OrderedDict
def sortfunc(item):
key,value = item.split('-')
return value
if __name__ == "__main__":
s = input().strip()
c = Counter(s)
lst = []
for key in c:
lst.append(key+'-'+str(c[key]))
lst.sort(key=lambda x :sortfunc(x), reverse=True)
print(lst)
将输出显示为:
['b-3', 'c-2', 'a-2', 'e-1', 'd-1']
现在,我需要帮助来增强sortFunc的方式 - 如果字符数相等,那么字符串需要按字母顺序排序。
答案 0 :(得分:1)
这是一种方式。
lst = ['b-3', 'a-2', 'c-4', 'd-2']
res = sorted(lst, key=lambda x: (lambda y: (int(y[1]), y[0]))(x.split('-')))
# ['a-2', 'd-2', 'b-3', 'c-4']
<强>解释强>
sorted
与key
参数和自定义lambda
功能结合使用。int
以进行整数比较。x.split('-')[::-1]
,因为您需要将其中一个值转换为int
。