Python - сортировка списков по минимуму - PullRequest
0 голосов
/ 20 января 2019

Я хочу отсортировать список по минимальной / минимальной цене ($ 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 () во время выполнения циклов, как я могу получить минимум последнего цикла?любой другой способ сделать это (лямбда)?Заранее спасибо ..

уточни, цена указана в 4-м индексе каждого подсписка.другие нет.

Ответы [ 3 ]

0 голосов
/ 20 января 2019

Принимает 3-е значение в подсписке

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

Или это?Я совершенно сбит с толку тем, что вы хотитеучитывая сроки, верно?Если это так, то оба решения эквивалентны, но первое - быстрее

0 голосов
/ 20 января 2019

Я отредактировал ваш оригинальный код:

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
0 голосов
/ 20 января 2019

Вы должны использовать лямбду. Я не понял, какой индекс является ценой, но если он, например, всегда в индексе 3, то вам нужно:

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

это даст вам строку с 3-м элементом наименьшим. Если я вас неправильно понял, пожалуйста, прокомментируйте, и я постараюсь вам помочь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...