Color Ratios
def get_color_ratios(colors, ratios):
"""Return dictionary of color ratios from color and ratio lists."""
assert len(colors) == len(ratios)
color_ratios = {}
for i in range(len(colors)):
color_ratios[colors[i]] = ratios[i]
return color_ratios
if __name__ == "__main__":
test_colors = ["red", "green", "blue"]
test_ratios = [0.1, 0.6, 0.3]
combined_dict = {'red': 0.1, 'green': 0.6, 'blue': 0.3}
assert get_color_ratios(test_colors, test_ratios) == combined_dict
Use enumerate to get the i-th index of the list as we loop over it: “Explicit is better than implicit.” and “Simple is better than complex.”
def get_color_ratios(colors, ratios):
"""Return dictionary of color ratios from color and ratio lists."""
assert len(colors) == len(ratios)
color_ratios = {}
for i, color in enumerate(colors):
color_ratios[color] = ratios[i]
return color_ratios
Use zip to combine colors and ratios lists, looping over both at once: “Complex is better than complicated.”
def get_color_ratios(colors, ratios):
"""Return dictionary of color ratios from color and ratio lists."""
assert len(colors) == len(ratios)
color_ratios = {}
for items in zip(colors, ratios):
color_ratios[items[0]] = items[1]
return color_ratios
Unpack each zipped item into verbose variable names while looping: PEP 8 and “Explicit is better than implicit.”
def get_color_ratios(colors, ratios):
"""Return dictionary of color ratios from color and ratio lists."""
assert len(colors) == len(ratios)
color_ratios = {}
for color, ratio in zip(colors, ratios):
color_ratios[color] = ratio
return color_ratios
Move this for loop into a dictionary comprehension: “Complex is better than complicated.” and “Flat is better than nested.”
def get_color_ratios(colors, ratios):
"""Return dictionary of color ratios from color and ratio lists."""
assert len(colors) == len(ratios)
color_ratios = {c: r for (c, r) in zip(colors, ratios)}
return color_ratios
Remove unnecessary variable which is returned immediately: “Simple is better than complex.”
Use ability of
dictto take list of two-tuples to make dictionary: “Simple is better than complex.” and “Beautiful is better than ugly.”
def get_color_ratios(colors, ratios):
"""Return dictionary of color ratios from color and ratio lists."""
assert len(colors) == len(ratios)
return dict(zip(colors, ratios))