我有一个如下所示的列表:
list = [[u'schei\xdfunwetter', u'storm', u'0.0007813'], [u'schei\xdfunwetter', u'goddamn', u'0.0002343'], [u'ingenieurin', u'night', u'0.0000442'], [u'ingenieurin', u'you', u'0.0000008'], [u'ingenieurin', u'NULL', u'0.0000004'], [u'ingenieurin', u'last', u'0.0000472'], [u'ingenieurin', u'anything', u'0.0000328']]
我想按数字(=概率)对此列表进行排序。
通过以前的问题/答案查看Stackoverflow,我找到了以下解决方案,它似乎适用于列表(li = [['a1', 1, 1.56], ['b3', '6', 9.28], ['c2', 1, 6.25]...]
):
list.sort(key=itemgetter(2))
但是,根据我的数据,这不起作用并返回NONE。 由于我认为它与数字是字符串有关,我尝试了以下内容:
sorted_list = list.sort(key=lambda x: int(x[2]))
,但这会返回另一个错误:
ValueError: invalid literal for int() with base 10: '0.0000723'
有人可以帮忙吗?
答案 0 :(得分:3)
In [24]: sorted(seq, key=lambda x: float(x[2]))
Out[24]:
[[u'ingenieurin', u'NULL', u'0.0000004'],
[u'ingenieurin', u'you', u'0.0000008'],
[u'ingenieurin', u'anything', u'0.0000328'],
[u'ingenieurin', u'night', u'0.0000442'],
[u'ingenieurin', u'last', u'0.0000472'],
[u'schei\xdfunwetter', u'goddamn', u'0.0002343'],
[u'schei\xdfunwetter', u'storm', u'0.0007813']]
float
代替int
。sorted
function代替sort
method。排序方法
返回None并修改列表。 sorted
函数返回列表的排序副本。如果你想分配
结果到sorted_list
,那么您需要使用sorted
功能list
,因为它会影响变量的内置
同名。答案 1 :(得分:0)
你必须尝试
>>> list.sort(key=lambda x: x[2])
>>> list
[[u'ingenieurin', u'NULL', u'0.0000004'], [u'ingenieurin', u'you', u'0.0000008'], [u'ingenieurin', u'anything', u'0.0000328'], [u'ingenieurin', u'night', u'0.0000442'], [u'ingenieurin', u'last', u'0.0000472'], [u'schei\xdfunwetter', u'goddamn', u'0.0002343'], [u'schei\xdfunwetter', u'storm', u'0.0007813']]
list.sort
将对自己执行操作。它将返回None。如果必须创建新的排序列表,则必须使用sorted
内置函数。