我试图在列表中对具有混合性质字段的元组进行排序:LABEL.NUMBER。例如:
aaaa.143
aadf.23
aaaa.8
..
所以,我想先将LABEL排序为字符串,并将NUMBER作为数字排序,即排序之后应该来:
aaaa.8
aaaa.143
aadf.23
..
我现在有以下内容:
for i in sorted(v_distribution.items(), key=lambda x: x[0]):
使用整个字段作为字符串排序,所以我得到:
aaaa.143
aaaa.8
aadf.23
..
我应该如何修改lambda函数来执行任务?
答案 0 :(得分:2)
类似的东西:
>>> s = ['aaaa.143', 'aadf.23', 'aaaa.8']
>>> def key_f(x):
... head, tail = x.split('.', 1)
... return (head, int(tail))
...
>>> sorted(s, key=key_f)
['aaaa.8', 'aaaa.143', 'aadf.23']
尽管可以使用lambda
完成此操作,但最好将密钥计算分成单独的函数。
答案 1 :(得分:1)
您可以使用lambda执行此操作:
for i in sorted(v_distribution.items(), key=lambda x: (x.split('.', 1)[0], int(x.split('.', 1)[1]):