python programming help

Benjamin Kaplan benjamin.kaplan at case.edu
Sun Dec 8 19:52:12 CET 2013


On Sun, Dec 8, 2013 at 10:32 AM, <rafaellasav at gmail.com> wrote:
>
> On Sunday, December 8, 2013 6:27:34 PM UTC, bob gailer wrote:
> > On 12/8/2013 12:59 PM, rafaellasav at gmail.com wrote:
> >
> > > i have a dictionary with names and ages for each name. I want to write a function that takes in an age and returns the names of all the people who are that age.
> >
> > > please help
> >
> > Welcome to the python list. Thanks for posting a question.
> >
> >
> >
> > If you were hoping for one of us to write the program for you ... well
> >
> > that's not what we do on this list.
> >
> >
> >
> > Please post the code you have so far and tell us exactly where you need
> >
> > help.
> >
> >
> >
> > Also tell us what version of Python, what OS, and what you use to write
> >
> > and run Python programs.
>
> name = ['Alice', 'Bob', 'Cathy', 'Dan', 'Ed', 'Frank', 'Gary', 'Helen', 'Irene', 'Jack', 'Kelly', 'Larry']
> age = [20, 21, 18, 18, 19, 20, 20, 19, 19, 19, 22, 19]
> dic={}
> def combine_lists(name,age):
>     for i in range(len(name)):
>         dic[name[i]]= age[i]
> combine_lists(name,age)
> print dic
>
> def people(age):
>     people=lambda age: [name for name in dic if dic[name]==age]
>
> people(20)
>
>
>
>
> this is the code i have so far(with the help of the first post ;p). i understand how a function and a dictionary works and what I'm asked to find. but i don't get the lambda age part. and this code doesn't give me any result
>
>

To return a value from a function, you need to use the "return"
statement with the value you want to pass back out. You're not doing
that here. Also, you're using a lot of shorthand stuff that you should
probably avoid until you're more comfortable with the language

* Lambda is shorthand for a function. foo = lambda bar : bar + 2 is
the same thing as the function
def foo(bar) :
    return bar + 2

* a list comprehension is short-hand for a loop. spam = [foo for foo
in bar if baz(foo)]  is the same thing as
spam = []
for foo in bar :
    if baz(foo) :
        spam.append(foo)

You don't need a lambda here- just call the code that you need to call directly.



More information about the Python-list mailing list