【问题标题】:Python - Using Lambda in List.Sort [closed]Python - 在 List.Sort 中使用 Lambda [关闭]
【发布时间】:2013-04-05 14:48:54
【问题描述】:

我正在尝试根据子列表中的第二个元素对列表列表进行排序。

样本数据:

 [[u'm3u33mm534o', 14, 23], [u'2w3dfbv333g', 20, 34], [u'7kv903nfjfr9', 0, 35]]

排序:

 out.sort(key=lambda x: float(x[1]))

错误:

TypeError: float() argument must be a string or a number

这里有什么问题?

【问题讨论】:

  • 样本数据没有问题。真实数据中的某些东西不是字符串或数字。
  • 最可能的问题是out 包含您显示的示例数据以外的其他内容。
  • operator.itemgetter(1)
  • 如果您包含 SSCCE (sscce.org),您可能会获得更好的帮助。
  • 你们说得对,我刚刚在我的数据中发现了异常。解决了这个问题,它奏效了。谢谢!

标签: python list python-2.7 lambda


【解决方案1】:

非常适合我...您的真实列表很可能包含第二个元素不可转换为浮点数的项目,例如:

>>> out = [[u'test', None, 35], [u'7kv903nfjfr9', 0, 35], [u'm3u33mm534o', 14, 23], [u'2w3dfbv333g', 20, 34]]
>>> x = out.sort(key=lambda x: float(x[1]))
...
TypeError: float() argument must be a string or a number

要调试,只需执行类似的操作

for i in out:
    try:
        float(i[1])
    except TypeError:
        print "error is here:", i

【讨论】:

    猜你喜欢
    • 2023-02-16
    • 1970-01-01
    • 2012-11-15
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多