Перемещение элемента в списке pyhton, если элемент сам является списком - PullRequest
1 голос
/ 07 мая 2020

Итак, я делаю код, который берет исторические значения указанных цен акций и возвращает список значений, подверженных риску, неважно, что это такое, проблема в следующем:

исходный список отображается следующим образом:

[['AMZN.csv', 2.289891777445866], ['BTC.csv', 5.453298793696432], ['FB.csv', 2.956361117388685], ['GOLD.csv', 1.2924516171324278], ['GOOG.csv', 2.7525367824881473], ['GSPC.csv', 2.4573561011238243], ['NFLX.csv', 3.155830089346503]]

Я хочу, чтобы элемент с наименьшим числовым значением был первым элементом (индекс 0), вторым наименьшим с его элементом в индексе 1 и так далее, вот код, который я пробовал до сих пор:

smallestValue=varList[0][1]
smallestIndex=0
smallestElement=varList[smallestIndex]
for q in range(len(varList)):
    currentSymbol=varList[q][1]
    if currentSymbol <= smallestValue and varList[q] != smallestElement:
        smallestValue=currentSymbol
        smallestIndex=q
        smallestElement=varList[q]
        print(smallestElement)
        varList.pop(smallestIndex)
        varList.insert(0,smallestElement)
        print(varList)
        q-=1

Он печатает следующее:

['GOLD.csv', 1.2924516171324278]
[['GOLD.csv', 1.2924516171324278], ['AMZN.csv', 2.289891777445866], ['BTC.csv', 5.453298793696432], ['FB.csv', 2.956361117388685], ['GOOG.csv', 2.7525367824881473], ['GSPC.csv', 2.4573561011238243], ['NFLX.csv', 3.155830089346503]]

Я знаю, что решение, вероятно, очень простое. но мой крайний срок - день, и, как нормальный человек, я откладываю это на вчерашний день и всю ночь пишу код, сейчас я заблокирован, хе-хе.

Ответы [ 2 ]

2 голосов
/ 07 мая 2020

Если я правильно понял проблему, решение действительно простое:

newList = sorted(varList, key=lambda x: x[1])
0 голосов
/ 07 мая 2020

Я решил свою проблему, на случай, если кто-то сочтет это полезным в будущем:

order=False
q=0
while order==False:
    currentElement=varList[q]
    currentValue = varList[q][1]
    if q>0:
        preValue=varList[q-1][1]
        if currentValue<=preValue:
            varList.pop(q)
            varList.insert(q-1,currentElement)
            q=0
    q+=1
    if q==len(varList):
        order=True

print(varList)

Наконец, конечный результат:

[['GOLD.csv', 1.2924516171324278], ['AMZN.csv', 2.289891777445866], ['GSPC.csv', 2.4573561011238243], ['GOOG.csv', 2.7525367824881473], ['FB.csv', 2.956361117388685], ['NFLX.csv', 3.155830089346503], ['BTC.csv', 5.453298793696432]]
...