Имеется такой вот код, по чтению лога и вывода на экран суммы. Результат выводится списком, нужно же его отсортировать в обратном порядке по paid. Как это возможно сделать?
Python:
import json
# log file name
import sys
FileName = "test.log.1"
def CalculateCodeStats(codeStats, jsonObject, userId = 0):
if "code" in jsonObject:
if userId != 0:
if "id_login" not in jsonObject:
return codeStats
if jsonObject["id_login"] != userId:
return codeStats
if jsonObject["code"] in codeStats:
codeStats[jsonObject["code"]]["arm"] += 1
else:
codeStats[jsonObject["code"]] = {
"arm": 1,
"bonus": 0,
"paid": 0
}
if "data" in jsonObject and isinstance(jsonObject["data"], dict) is True:
if "bonus" in jsonObject["data"]:
codeStats[jsonObject["code"]]["bonus"] += jsonObject["data"]["bonus"]
if "paid" in jsonObject["data"]:
codeStats[jsonObject["code"]]["paid"] += jsonObject["data"]["paid"]
return codeStats
if __name__ == "__main__":
args = sys.argv[1:]
userId = 0 if len(args) == 0 else int(sys.argv[1:][0])
loglines = []
codeStats = {}
print('Reading file...')
with open(FileName, 'r') as logfile:
loglines = logfile.read().splitlines()
print('Read successful!')
print('Started parsing...')
for line in loglines:
splitted = line.split('conflict: ')
if len(splitted) > 1:
jsonString = splitted[1]
try:
jsonObject = json.loads(jsonString)
except Exception as e:
print(f'Cannot unmarshall line "{line}"\nError: {e}')
continue
codeStats = CalculateCodeStats(codeStats, jsonObject, userId)
print('Success!')
for stat in codeStats:
print(f'{stat}: {codeStats[stat]}')
pass
Последнее редактирование: