Python-按最小值排序列表

时间:2019-01-20 18:19:16

标签: python arrays list

我想按价格的最低/最低价格($ 30)对列表进行排序,价格会不断更新。该列表包含其他信息,例如unix时间戳等。因此,我能够隔离价格的唯一方法是通过循环。

new = [[1548006540000, '30.48000000', '30.50000000', '30.48000000', '30.49000000', '9.44678000', 1548006599999, '288.05801500', 5, '4.24009000', '129.27641360', '0'], 
[1548006600000, '30.50000000', '30.50000000', '30.48000000', '30.49000000', '8.56304000', 1548006659999, '261.12404810', 3, '8.17304000', '249.23684810', '0'], 
[1548006660000, '30.49000000', '30.49000000', '30.48000000', '30.48000000', '14.27839000', 1548006719999, '435.27885450', 7, '14.27547000', '435.18985290', '0'], 
[1548006720000, '30.50000000', '30.57000000', '30.50000000', '30.53000000', '103.97541000', 1548006779999, '3173.52545900', 28, '58.78941000', '1794.71718910', '0'], 
[1548006780000, '30.53000000', '30.59000000', '30.51000000', '30.52000000', '86.32365000', 1548006839999, '2635.32247120', 31, '23.33218000', '712.42226920', '0'], 
[1548006840000, '30.52000000', '30.52000000', '30.38000000', '30.39000000', '618.95322000', 1548006899999, '18842.24179880', 120, '115.54521000', '3516.61937340', '0'], 
[1548006900000, '30.39000000', '30.39000000', '30.36000000', '30.36000000', '62.09526000', 1548006959999, '1885.52106400', 9, '0.00000000', '0.00000000', '0']]



lowest = []

for l in new:
    sts = ','.join(str(e) for e in l)
    splis = sts.split('\n')
    for lin in splis:
        lan = lin.split(',')
        price = lan[3]



        lowest.append(float(price))

        print(lowest)

因为列表中有7个列表,所以我得到七个循环,最后一个循环 是我需要的信息,但是在循环发生时我不能使用min()函数,如何获得最后一个循环的最小值?还有其他方法可以做到这一点(lambda)吗?预先谢谢你。

澄清一下,价格在每个子列表的第4个索引中。其他不是。

3 个答案:

答案 0 :(得分:0)

您应该使用lambda。我不知道哪个指数是价格,但是例如,如果该指数始终位于指数3中,那么您就不需要:

lowest = min(new, key=lambda x:x[3])

这将使第3个元素的行最小。 如果我误解了您,请发表评论,我会尽力帮助您。

答案 1 :(得分:0)

在子列表中获取第3个值

prices= [i[3] for i in new]
>>> prices
['30.48000000', '30.48000000', '30.48000000', '30.50000000', '30.51000000', '30.38000000', '30.36000000']

还是这个?我很困惑你想要什么

从子列表的第1-4个值中提取最小值

prices = [min(i[1:5]) for i in new]
>>> flat_list
['30.48000000', '30.48000000', '30.48000000', '30.50000000', '30.51000000', '30.38000000', '30.36000000']

我猜数据集是古典市场api,它在给定的时间范围内具有第3个值作为最小价格值,对吗?如果是这样,那么两种解决方案都是等效的,但第一种解决方案更快

答案 2 :(得分:0)

我已经编辑了您的原始代码:

lowest = []

for l in new:
    price = l[3] # get the fourth element from each sublist (index = 3)
    lowest.append(float(price))

min_price = min(lowest) # get the minimum
sorted_list = sorted(lowest) # get the sorted list