Skip to content
Advanced collections practice.
Branch: master
Clone or download
Latest commit 031d65c Nov 26, 2018
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
football_dictionaries Readme Jul 28, 2017
.gitignore Update .gitignore Sep 21, 2017
.travis.yml Update .travis.yml Nov 5, 2018
LICENSE
Makefile Initial Commit Jul 28, 2017
README.md
Warm Up Activities (SOLUTIONS).ipynb Migrate warmup to notebooks Oct 12, 2018
Warm Up Activities.ipynb Migrate warmup to notebooks Oct 12, 2018
csv_example.py Initial Commit Jul 28, 2017
dev-requirements.txt Update dev-requirements.txt Feb 19, 2018
main.py Initial Commit Jul 28, 2017
squads.csv Initial Commit Jul 28, 2017
test_data.csv Initial Commit Jul 28, 2017
tests.py Fixed bug in assignment 3 test Sep 12, 2017
tox.ini Initial Commit Jul 28, 2017

README.md

Football Dictionaries

Today's project will deal with two of our greatest passions: dictionaries and football 😉. This project requires the use of nested collections (lists of lists, dicts nested under lists, etc) and nested control flow structures. It's the final challenge regarding collections for our course. If you can complete this project, you'll become a Master of Data and Collections and you might even get a gold star.

Warm up

Before approaching the main tasks of the project, there's a warm up section to revisit topics about collections (especially when they're nested). Open the notebook Warm Up Activities.ipynb to practice with them. There's also a notebook containing the solutions in case you need some help.

The Real Project

After finishing the warm up section, you'll be ready to take on the real project. This project is divided into 3 assignments, each one requires something different. But all these assignments will deal with the same initial data: a list of players structured as a "list of lists".

Translation to human: There's a big list that has players inside. But each player is represented as a list, with each position in the list being a different piece of information for the player.

Note: This project is very similar to the one we did organizing the invoice data on class 1 of this week!

Example:

SQUADS_DATA = [
  [
    "1",                                     # Number
    "GK",                                    # Position
    "Juan Botasso",                          # Name
    "(1908-10-23)23 October 1908 (aged 21)", # Date of Birth
    "",                                      # Caps
    "Quilmes",                               # Club
    "Argentina",                             # Country (Players Country)
    "Argentina",                             # Club Country
    "1930"                                   # Year
  ],
  [
    "9",
    "FW",
    "Roberto Cherro",
    "(1907-02-23)23 February 1907 (aged 23)",
    "",
    "Boca Juniors",
    "Argentina",
    "Argentina",
    "1930"
  ]
  # More Players...
]

Your job through this entire group project will be to transform these lists to Dictionaries.

Assignment 1 - Lists to Dicts

The first assignment just requires you to turn these players into dictionaries with the following structure:

{
    'number': ...,
    'position': ...,
    'name': ...,
    'date_of_birth': ...,
    'caps': ...,
    'club': ...,
    'country': ...,
    'club_country': ...,
    'year': ...,
}

Given our previous example, now our new list containing players as dictionaries would look like:

SQUADS_DATA = [
  {
    'number': "1",
    'position': "GK",
    'name': "Juan Botasso",
    'date_of_birth': "(1908-10-23)23 October 1908 (aged 21)",
    'caps': "",
    'club': "Quilmes",
    'country': "Argentina",
    'club_country': "Argentina",
    'year': "1930"
  },
  {
    'number': "9",
    'position': "FW",
    'name': "Roberto Cherro",
    'date_of_birth': "(1907-02-23)23 February 1907 (aged 23)",
    'caps': "",
    'club': "Boca Juniors",
    'country': "Argentina",
    'club_country': "Argentina",
    'year': "1930"
  }
  # More Players...
]

Assignment 2

This assignment is similar to the previous one, but instead of having just one big list with all the players, we're going to group them by position. Your result will look something like:

# Please note we're returning a dictionary instead of a list
{
  "GK": [{..player1..}, {..player2..}],
  "DF": [{..player1..}, {..player2..}],
  "MF": [{..player1..}, {..player2..}],
  "FW": [{..player1..}, {..player2..}],
}

Assignment 3

And finally this is really similar to the second assignment but we'll add one more level of nesting. This function will return the players grouped by country, and per each country, grouped by position. Example:

{
  "Argentina": {
    "GK": [{..player1..}, {..player2..}],
    "DF": [{..player1..}, {..player2..}],
    "MF": [{..player1..}, {..player2..}],
    "FW": [{..player1..}, {..player2..}],
  },
  "Brazil": {
    "GK": [{..player1..}, {..player2..}],
    "DF": [{..player1..}, {..player2..}],
    "MF": [{..player1..}, {..player2..}],
    "FW": [{..player1..}, {..player2..}],
  }
}

Walkthrough solution

We've got together with a few students to present a possible solution. Watch it on YouTube:

You can’t perform that action at this time.