Giter Club home page Giter Club logo

python-p3-data-structures-lab's Introduction

Data Structures Lab

Learning Goals

  • Practice using comprehensions and built-in methods for data structures in Python.
  • Execute and test Python code using the Python shell and pytest.

Key Vocab

  • Sequence: a data structure in which data is stored and accessed in a specific order.
  • Index: the location, represented by an integer, of an element in a sequence.
  • Iterable: able to be broken down into smaller parts of equal size that can be processed in turn. You can loop through any iterable object.
  • Slice: a group of neighboring elements in a sequence.
  • Mutable: an object that can be changed.
  • Immutable: an object that cannot be changed. (Many immutable objects appear mutable because programmers reuse their names for new objects.)
  • List: a mutable data type in Python that can store many types of data. The most common data structure in Python.
  • Tuple: an immutable data type in Python that can store many types of data.
  • Range: a data type in Python that stores integers in a fixed pattern.
  • String: an immutable data type in Python that stores unicode characters in a fixed pattern. Iterable and indexed, just like other sequences.

Instructions

Time to get some practice! Write your code in the data_structures.py file in the lib/ folder. Run pytest -x to check your work. Your goal is to practice manipulating sequences with the Python tools you've learned about in this lesson and the lessons before.

In data_structures.py, there is a list of dictionaries representing different spicy foods.

spicy_foods = [
    {
        "name": "Green Curry",
        "cuisine": "Thai",
        "heat_level": 9,
    },
    {
        "name": "Buffalo Wings",
        "cuisine": "American",
        "heat_level": 3,
    },
    {
        "name": "Mapo Tofu",
        "cuisine": "Sichuan",
        "heat_level": 6,
    },
]

Practice using loops and Python list comprehensions alongside list and dict methods to solve these deliverables.

get_names()

Define a function get_names() that takes a list of spicy_foods and returns a list of strings with the names of each spicy food.

get_names(spicy_foods)
# => ["Green Curry", "Buffalo Wings", "Mapo Tofu"]

get_spiciest_foods()

Define a function get_spiciest_foods() that takes a list of spicy_foods and returns a list of dictionaries where the heat level of the food is greater than 5.

get_spiciest_foods(spicy_foods)
# => [{"name": "Green Curry", "cuisine": "Thai", "heat_level": 9}, {"name": "Mapo Tofu", "cuisine": "Sichuan", "heat_level": 6}]

print_spicy_foods()

Define a function print_spicy_foods() that takes a list of spicy_foods and output to the terminal each spicy food in the following format using print(): Buffalo Wings (American) | Heat Level: 🌢🌢🌢.

HINT: you can use times (*) with a string to produce the correct number of "🌢" emojis.

For example:

"hello" * 3 == "hellohellohello"
# => True
print_spicy_foods(spicy_foods)
# => Green Curry (Thai) | Heat Level: 🌢🌢🌢🌢🌢🌢🌢🌢🌢
# => Buffalo Wings (American) | Heat Level: 🌢🌢🌢
# => Mapo Tofu (Sichuan) | Heat Level: 🌢🌢🌢🌢🌢🌢

get_spicy_food_by_cuisine()

Define a function get_spicy_food_by_cuisine() that takes a list of spicy_foods and a string representing a cuisine, and returns a single dictionary for the spicy food whose cuisine matches the cuisine being passed to the method.

get_spicy_food_by_cuisine(spicy_foods, "American")
# => {"name": "Buffalo Wings", "cuisine": "American", "heat_level": 3}

get_spicy_food_by_cuisine(spicy_foods, "Thai")
# => {"name": "Green Curry", "cuisine": "Thai", "heat_level": 9}

print_spiciest_foods()

Define a function print_spiciest_foods() that takes a list of spicy_foods and outputs to the terminal ONLY the spicy foods that have a heat level greater than 5, in the following format:

Buffalo Wings (American) | Heat Level: 🌢🌢🌢.

Try to use functions you've already written to solve this!

print_spiciest_foods(spicy_foods)
# => Green Curry (Thai) | Heat Level: 🌢🌢🌢🌢🌢🌢🌢🌢🌢
# => Mapo Tofu (Sichuan) | Heat Level: 🌢🌢🌢🌢🌢🌢

get_average_heat_level()

Define a function average_heat_level() that takes a list of spicy_foods and returns an integer representing the average heat level of all the spicy foods in the array. Recall that to derive the average of a collection, you need to calculate the total and divide number of elements in the collection.

average_heat_level(spicy_foods)
# => 6

create_spicy_food()

Define a function create_spicy_food() that takes a list of spicy_foods and a new spicy_food and returns the original list with the new spicy_food added.

Example:

create_spicy_food(
    spicy_foods,
    {
        'name': 'Griot',
        'cuisine': 'Haitian',
        'heat_level': 10,
    }
)

# => [
# =>     {
# =>         "name": "Green Curry",
# =>         "cuisine": "Thai",
# =>         "heat_level": 9,
# =>     },
# =>     {
# =>         "name": "Buffalo Wings",
# =>         "cuisine": "American",
# =>         "heat_level": 3,
# =>     },
# =>     {
# =>         "name": "Mapo Tofu",
# =>         "cuisine": "Sichuan",
# =>         "heat_level": 6,
# =>     },
# =>     {
# =>         'name': 'Griot',
# =>         'cuisine': 'Haitian',
# =>         'heat_level': 10,
# =>     },
# => ]

When all of your tests are passing, submit your work using git.


Resources

python-p3-data-structures-lab's People

Contributors

betalantz avatar jlboba avatar lizbur10 avatar professor-ben avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-p3-data-structures-lab's Issues

Rename repo

Canvas Link

n/a

Concern

Rename repo to follow usual naming convention

Additional Context

No response

Suggested Changes

No response

Description confusing?

Canvas Link

https://learning.flatironschool.com/courses/6049/assignments/195247?module_item_id=439022

Concern

This lab was pretty straightforward. The confusion I encountered was where, in the README, it says:

You could use a loop to solve all of these, but try to expand your toolkit and use some other methods to make the job easier, like get(), append(), and sort()

but on get_spicy_food_by_cuisine, if you follow this guideline, there's no way to solve this without for loop, unless you do:

def get_spicy_food_by_cuisine(spicy_foods, cuisine):
    return [food for food in spicy_foods if food["cuisine"] == cuisine][0]

which is kinda weird, but then, in the solution here, they just use a for loop anyway.

There's also no questions that require using get(), append(), or sort(), but I also see that it probably used to be a question given this commented code. Could we update language here to avoid confusion?

Additional Context

No response

Suggested Changes

Probably just take out this line in the README? Whatever you guys think is best

Questions

Link to Canvas

Issue Subtype

  • Master branch code
  • Solution branch code
  • Code tests
  • Layout/rendering issue
  • Instructions unclear
  • Other (explain below)

Describe the Issue

Source


Concern

(Optional) Proposed Solution

What OS Are You Using?

  • OS X
  • Windows
  • WSL
  • Linux
  • IllumiDesk

Any Additional Context?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.