拆分和映射到整数的键:
sorted(inputlist, key=lambda v: [int(i) for i in v.rstrip('@').split('.')])
这产生每一行整数列表,而这些都是然后按字典顺序排序;例如在不同的第一个元素上。
演示:
>>> sample = '''\
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... [email protected]@
... '''.splitlines()
>>> from pprint import pprint
>>> sorted(sample, key=lambda v: [int(i) for i in v.rstrip('@').split('.')])
['[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@', '[email protected]@']
>>> pprint(_)
['[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@',
'[email protected]@']
会'键=拉姆达X:浮子(x.rstrip( “@”))'是整数的列表中的可接受的替代? – inspectorG4dget 2014-09-24 09:35:16
@ inspectorG4dget:不,因为这里有3个组件的数字,它们不是有效的浮点数。 – 2014-09-24 09:36:00
当我在代码中尝试时,它抛出“ValueError:int()与基数为10的无效文字:'\ x02'”@MartijinPieters – Nijesh 2014-09-24 10:10:26