# -*- coding: utf-8 -*-
# MIT OCW 6.189 Homework 3
# Exercise 3.4 – More About Dictionaries
# Mechanical MOOC
# Judy Young
# July 24, 2013
# These lists match up, so Alice’s age is 20, Bob’s age is 21, and so on.
# Write a function combine_lists that combines these lists into a dictionary
# (hint: what should the keys, and what should the values, of this dictionary be?).
# Then, write a function people that takes in an age and returns the names of
# all the people who are that age.
NAMES = ['Alice', 'Bob', 'Cathy', 'Dan', 'Ed', 'Frank',
'Gary', 'Helen', 'Irene', 'Jack', 'Kelly', 'Larry']
AGES = [20, 21, 18, 18, 19, 20, 20, 19, 19, 19, 22, 19]
# Define your functions here
def combine_lists(list_1, list_2):
comb_dict = {}
for item_1, item_2 in zip(list_1, list_2):
comb_dict[item_1] = item_2
return comb_dict
combined_dict = combine_lists(NAMES, AGES)
def people(age):
# Use combined_dict within this function...
match_list = []
for each in combined_dict.items():
if age in each:
match_list.append(each[0])
return match_list
# Test Cases for Exercise 3.4 (all should be True)
print 'Dan' in people(18) and 'Cathy' in people(18)
print 'Ed' in people(19) and 'Helen' in people(19) and\
'Irene' in people(19) and 'Jack' in people(19) and 'Larry'in people(19)
print 'Alice' in people(20) and 'Frank' in people(20) and 'Gary' in people(20)
print people(21) == ['Bob']
print people(22) == ['Kelly']
print people(23) == []
IyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KIyBNSVQgT0NXIDYuMTg5IEhvbWV3b3JrIDMKIyBFeGVyY2lzZSAzLjQg4oCTIE1vcmUgQWJvdXQgRGljdGlvbmFyaWVzCiMgTWVjaGFuaWNhbCBNT09DCiMgSnVkeSBZb3VuZwojIEp1bHkgMjQsIDIwMTMKCiMgVGhlc2UgbGlzdHMgbWF0Y2ggdXAsIHNvIEFsaWNl4oCZcyBhZ2UgaXMgMjAsIEJvYuKAmXMgYWdlIGlzIDIxLCBhbmQgc28gb24uCiMgV3JpdGUgYSBmdW5jdGlvbiBjb21iaW5lX2xpc3RzIHRoYXQgY29tYmluZXMgdGhlc2UgbGlzdHMgaW50byBhIGRpY3Rpb25hcnkKIyAoaGludDogd2hhdCBzaG91bGQgdGhlIGtleXMsIGFuZCB3aGF0IHNob3VsZCB0aGUgdmFsdWVzLCBvZiB0aGlzIGRpY3Rpb25hcnkgYmU/KS4KIyBUaGVuLCB3cml0ZSBhIGZ1bmN0aW9uIHBlb3BsZSB0aGF0IHRha2VzIGluIGFuIGFnZSBhbmQgcmV0dXJucyB0aGUgbmFtZXMgb2YKIyBhbGwgdGhlIHBlb3BsZSB3aG8gYXJlIHRoYXQgYWdlLgoKTkFNRVMgPSBbJ0FsaWNlJywgJ0JvYicsICdDYXRoeScsICdEYW4nLCAnRWQnLCAnRnJhbmsnLAogICAgICAgICAgICAgICAgICdHYXJ5JywgJ0hlbGVuJywgJ0lyZW5lJywgJ0phY2snLCAnS2VsbHknLCAnTGFycnknXQpBR0VTID0gWzIwLCAyMSwgMTgsIDE4LCAxOSwgMjAsIDIwLCAxOSwgMTksIDE5LCAyMiwgMTldCgojIERlZmluZSB5b3VyIGZ1bmN0aW9ucyBoZXJlCmRlZiBjb21iaW5lX2xpc3RzKGxpc3RfMSwgbGlzdF8yKToKICAgIGNvbWJfZGljdCA9IHt9CiAgICBmb3IgaXRlbV8xLCBpdGVtXzIgaW4gemlwKGxpc3RfMSwgbGlzdF8yKToKICAgICAgICBjb21iX2RpY3RbaXRlbV8xXSA9IGl0ZW1fMiAKICAgIHJldHVybiBjb21iX2RpY3QKCmNvbWJpbmVkX2RpY3QgPSBjb21iaW5lX2xpc3RzKE5BTUVTLCBBR0VTKQoKZGVmIHBlb3BsZShhZ2UpOgogICAgIyBVc2UgY29tYmluZWRfZGljdCB3aXRoaW4gdGhpcyBmdW5jdGlvbi4uLgogICAgbWF0Y2hfbGlzdCA9IFtdCiAgICBmb3IgZWFjaCBpbiBjb21iaW5lZF9kaWN0Lml0ZW1zKCk6CiAgICAgICAgaWYgYWdlIGluIGVhY2g6CiAgICAgICAgICAgIG1hdGNoX2xpc3QuYXBwZW5kKGVhY2hbMF0pCiAgICByZXR1cm4gbWF0Y2hfbGlzdAoKIyBUZXN0IENhc2VzIGZvciBFeGVyY2lzZSAzLjQgKGFsbCBzaG91bGQgYmUgVHJ1ZSkKcHJpbnQgJ0RhbicgaW4gcGVvcGxlKDE4KSBhbmQgJ0NhdGh5JyBpbiBwZW9wbGUoMTgpCnByaW50ICdFZCcgaW4gcGVvcGxlKDE5KSBhbmQgJ0hlbGVuJyBpbiBwZW9wbGUoMTkpIGFuZFwKICAgICAgICdJcmVuZScgaW4gcGVvcGxlKDE5KSBhbmQgJ0phY2snIGluIHBlb3BsZSgxOSkgYW5kICdMYXJyeSdpbiBwZW9wbGUoMTkpCnByaW50ICdBbGljZScgaW4gcGVvcGxlKDIwKSBhbmQgJ0ZyYW5rJyBpbiBwZW9wbGUoMjApIGFuZCAnR2FyeScgaW4gcGVvcGxlKDIwKQpwcmludCBwZW9wbGUoMjEpID09ICAgWydCb2InXQpwcmludCBwZW9wbGUoMjIpID09ICAgWydLZWxseSddCnByaW50IHBlb3BsZSgyMykgPT0gICBbXQo=