【问题标题】:How can I sort a list of lists by one of the items in the sublists? [duplicate]如何按子列表中的一项对列表列表进行排序? [复制]
【发布时间】:2014-02-28 11:23:26
【问题描述】:

我有一个如下所示的列表:

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'

谁能帮忙?

【问题讨论】:

  • list.sort 总是 返回无。该列表已就地排序。

标签: python


【解决方案1】:
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,因为它会隐藏 同名。

【讨论】:

  • 我不知道 sort 和 sorted 有区别 - 感谢您指出这一点!现在可以使用...非常感谢!
【解决方案2】:

你必须尝试

>>> 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 将对自身执行操作。它将返回无。如果必须创建新的排序列表,则必须使用 sorted 内置函数。

【讨论】:

    猜你喜欢
    • 2013-08-11
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 2020-06-09
    • 2021-01-23
    • 1970-01-01
    • 2022-01-04
    相关资源
    最近更新 更多