Библиотека pandas
идеально подходит для этой задачи:
Во-первых, измените ваши данные, чтобы они могли легко помещаться в информационный фрейм, удалив size=
и name=
, а также ненужные пробелы:
import re
import pandas as pd
tables = [re.sub(r'(\w+=|\s+)', '', i).split(',') for i in tables]
# [['20180512', 'file01', '100'],
# ['20180512', 'file02', '90'],
# ['20180513', 'file01', '70'],
# ['20180513', 'file02', '70'],
# ['20180513', 'file03', '80'],
# ['20180514', 'file01', '100'],
# ['20180514', 'file02', '90']]
Затем преобразовать в фрейм данных:
df = pd.DataFrame(tables, columns=['Date', 'Name', 'Size'])
# Date Name Size
# 0 20180512 file01 100
# 1 20180512 file02 90
# 2 20180513 file01 70
# 3 20180513 file02 70
# 4 20180513 file03 80
# 5 20180514 file01 100
# 6 20180514 file02 90
Наконец, мы можем использовать groupby
и idxmax()
, чтобы получить наши максимальные значения, и zip
, чтобы преобразовать в словарь:
df['Size'] = df['Size'].astype(int)
maxes = df.iloc[df.groupby('Date').Size.idxmax()]
# Date Name Size
# 0 20180512 file01 100
# 4 20180513 file03 80
# 5 20180514 file01 100
print(dict(zip(maxes.Date.values, maxes.Name.values)))
# {'20180512': 'file01', '20180513': 'file03', '20180514': 'file01'}