【问题标题】:How to sort the list having float values in python? [duplicate]如何在python中对具有浮点值的列表进行排序? [复制]
【发布时间】:2018-10-23 05:06:44
【问题描述】:

我的输出像 -

x1 = [['10.0', '[9.8-10.2]'], ['10.4', '[10.0-10.8]'], ['10.9', '[8.7-13.7]'], ['102.3', '[96.1-108.9]'], ['107.8', '[99.5-116.9]'], ['108.4', '[98.1-119.6]'], ['109.9', '[100.6-120.7]'], ['11.0', '[10.8-11.2]'], ['11.1', '[10.5-11.7]'], ['11.2', '[10.9-11.5]'], ['11.2', '[11.0-11.4]'], ['11.3', '[10.6-12.0]'], ['11.6', '[11.4-11.9]'], ['110.7', '[97.9-125.9]'], ['117.3', '[108.8-126.2]'], ['118.1', '[106.1-130.8]'], ['119.4', '[102.9-137.8]'], ['12.2', '[11.5-12.9]'], ['12.6', '[12.3-12.9]']]

这是在排序之后,但它返回 10.0, 10.4, 10.9, 102.3, 107.8, 108.4, 109.9, 11.0,11.1 等等,但它应该是这样的 - 10.0, 10.4, 10.9, 11.0,11.1, 102.3, 107.8、108.4、109.9

我尝试的如下:

for x3 in ss:
    if x3[0].isdigit():
        ss = float(x3[0])

x1 = sorted(ss, key = itemgetter(0))
print x1

上面的输出是 x1。

即使不使用 isdigit() 和 float(),输出也是一样的。 x1 = 排序(ss,键 = itemgetter(0)) 打印 x1

【问题讨论】:

    标签: python list csv sorting


    【解决方案1】:

    这应该可以解决您的问题:

    sorted(x1, key=lambda x: float(x[0]))
    

    我假设您的排序功能不起作用并且 ss 实际上等于 x1。在这两种情况下,您要做的是将函数传递给 sorted() 函数中的关键参数。

    这个键应该是第一个浮动元素(因此是float(x[0])

    【讨论】:

    • 请解释一下原因。否则他会在两周内问其​​他一些关于如何使用整数的问题;)
    • 这个真的很管用。非常感谢你:)
    • @Netwave - 我知道它是如何工作的。 :)
    【解决方案2】:

    一种解决方案是将子列表的第一个元素转换为float,然后使用sorted。这确实会改变您的原始子列表,但可能正是您需要的。

    res = sorted(map(lambda i: [float(i[0]), i[1]], x1))
    

    这里我们获取每个子列表并将第一个元素转换为float,同时保持第二个元素不变。


    如果您希望使用itemgetter 而避免使用lambda,最简单的方法是组合函数。这在标准库中不可用,但toolz 提供了此功能:

    from toolz import compose
    from operator import itemgetter
    
    res = sorted(x1, key=compose(float, itemgetter(0)))
    

    【讨论】:

    • toolz 对我来说真的很新。太感谢了。我正在考虑将 float 与 itemgetter() 一起使用,但不知道我们可以提供 2 个这样的参数。
    • @garg,是的。但请注意,它是第 3 方库,因此不完全可移植。在我看来,组合是函数式编程的基础,至少应该在functools 中。
    • .......@jpp - 好的!
    猜你喜欢
    • 2016-09-16
    • 1970-01-01
    • 2013-12-06
    • 1970-01-01
    • 2018-07-21
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2016-10-02
    相关资源
    最近更新 更多