Сортированные списки не работают должным образом в Python - PullRequest
0 голосов
/ 31 мая 2019

Я сортирую CSV-файл с 14 заголовками и 500 000 записей в нем.Я организовал их, используя функцию перечисления.Однако, когда я использую функцию sorted (), чтобы отсортировать их по ключевому значению (например, общая прибыль), он возвращает только числа меньше 100 000 (т. Е. 99 992,36, когда в действительности некоторые значения уходят в миллионы).

Когда я переключаюсь на другое значение ключа (например, общую стоимость), я сталкиваюсь с той же проблемой, однако, если эта конкретная запись имела общую прибыль более 100 000, это значение действительно отображается.Так что я думаю, что я сузил это до моей функции sorted ().

def processStats(originalList, header):

    #sorting in descending order
    sortedListByTotalProfit = sorted(originalList, key = operator.itemgetter(11), reverse = True)

    max_item = sortedListByTotalProfit[0]
    print(max_intem)

def main():
    fileName = 'Records.csv'
    records = []
    recordHeader = []    

    with open(fileName) as f:
        lines = f.readlines()
        for i, line in enumerate(lines):
            if i == 0: #first line is the header, store it in the list by splitting the first record by comma
                recordHeader=line.split(',') 
                continue
            records.append(line.split(",")) #takes each record in the file and stores elements separated by commas as elements of a list

    processStats(records, recordHeader)

1 Ответ

0 голосов
/ 31 мая 2019

Я думаю, тип данных - строка.Вы можете использовать
records.append(list(map(int, line.split(",")))) для замены records.append(line.split(","))
всего кода:

def processStats(originalList, header):

    #sorting in descending order
    sortedListByTotalProfit = sorted(originalList, key = operator.itemgetter(11), reverse = True)

    max_item = sortedListByTotalProfit[0]
    print(max_intem)

def main():
    fileName = 'Records.csv'
    records = []
    recordHeader = []    

    with open(fileName) as f:
        lines = f.readlines()
        for i, line in enumerate(lines):
            if i == 0: #first line is the header, store it in the list by splitting the first record by comma
                recordHeader=line.split(',') 
                continue
            records.append(records.append(list(map(int, line.split(","))))) #takes each record in the file and stores elements separated by commas as elements of a list

    processStats(records, recordHeader)
...