On 26/09/11 18:00, StevenJ Hennessy wrote:
Hello,
I am currently struggling with a homework assignment. I need to use Map
reduce to create a dictionary of palendromes -> number of palendrome
for example: the string "bab bab bab cab cac dad" would output:
bab 3
cab 1

I assume this should be cac?

dad 1

here is what I have so far

def palendrome(string):
palendromes = []
for word in string.split(" "):
   if (word == word[::-1]):
      palendromes.append(word)
return palendromes

This seems pretty fair

string = "abc abd bab tab cab tat yay uaefdfdu"

And the purpose of this is?

print map(lambda x: palendrome(x), ["bab abc dab bab bab dad crap pap
pap "])
#returns a list of lists [['bab', 'bab', 'bab', 'dad', 'pap', 'pap', '']]

That last element seems odd...
Why are you applying map() to a list containing just one element?

#Here is my attempt so far at the reduce section

def p(lists):
for list in lists:
set_h = set(list)
return set_h

The problem description mentioned using a dictionary.
I don't see any dictionaries?

#with the p function I want to create a set of all palendromes found.
Then run a count of the palendroms on the list and make a dict #out of this

print reduce(p, [['bab', 'bab', 'bab', 'dad', 'pap', 'pap', '']])

Again, reduce isn't really doing anything here, you are just applying the function to a single element in the list.

Am I on the right track?

Sadly no. You are on track to produce a solution of sorts but not one that matches your original problem description/requirements statement. You need to use map/reduce/a dictionary. Now, I'm not sure the map/reduce/dictionary solution is a good idea, but it is the one you have been asked to write.

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor

Reply via email to