Я пишу программу, которая должна прочитать CSV / текстовый файл с результатами футбольных матчей, который выглядит следующим образом:
Lions 3, Snakes 3
Tarantulas 1, FC Awesome 0
Lions 1, FC Awesome 1
Tarantulas 3, Snakes 1
Lions 4, Grouches 0
Если команды играют вничью, каждая команда получает 1 очко, если команда побеждает, она получает 3 очка.
В идеале вывод должен выглядеть следующим образом:
1. Tarantulas, 6 pts
2. Lions, 5 pts
3. FC Awesome, 1 pt
3. Snakes, 1 pt
4. Grouches, 0 pts
Это код, который у меня есть:
import pandas as pd
data = pd.read_csv("sample_input.csv", header=None, names=['left_team', 'right_team'])
data_dict = data.to_dict(orient='list')
def splitter(row):
left_team, right_team = row.split(',')
return {
'left_team': left_team[:-2].strip(),
'left_score': int(left_team[-2:].strip()),
'right_team': right_team[:-2].strip(),
'right_score': int(right_team[-2:].strip())
}
Мой вопрос: как мне получить данные из фрейма данных для сравнения значений? Я также пытался кодировать решение без панд, но я борюсь с этим. Любая помощь будет оценена! Спасибо!
Это другое решение, которое я пробовал:
from collections import defaultdict
import csv
reader = csv.DictReader(open('sample_input.csv', 'r'))
dict_list = []
for line in reader:
dict_list.append(line)
data_list = [splitter(row) for row in reader]
def splitter(row):
left_team, right_team = row.split(',')
return {
'left_team': left_team[:-2].strip(),
'left_score': int(left_team[-2:].strip()),
'right_team': right_team[:-2].strip(),
'right_score': int(right_team[-2:].strip())
}
data_dicts = [splitter(row) for row in reader]
team_scores = defaultdict(int)
for game in data_dicts:
if game['left_score'] == game['right_score']:
team_scores[game['left']] += 1
team_scores[game['right']] += 1
elif game ['left_score'] > game['right_score']:
team_scores[game['left']] += 3
else:
team_scores[game['right']] += 3
teams_sorted = sorted(team_scores.items(), key=lambda team: team[1], reverse=True)
for line in teams_sorted:
print(line)