"Drew" <[EMAIL PROTECTED]> writes: > I'm currently writing a toy program as I learn python that acts as a > simple address book. I've run across a situation in my search function > where I want to iterate across a filtered list. My code is working > just fine, but I'm wondering if this is the most "elegant" way to do > this. Essentially, I'm searching the dict self.contacts for a key that > matches the pattern entered by the user. If so, I print the value > associated with that key. A pastie to the method is below, any help/ > advice is appreciated:
If I can decipher your Ruby example (I don't know Ruby), I think you want: for name,contact in contacts.iteritems(): if re.search('search', name): print contact If you just want to filter the dictionary inside an expression, you can use a generator expression: d = ((name,contact) for (name,contact) in contacts.iteritems() \ if re.search('search', name)) print '\n'.join(d) # prints items from filtered dict, one per line Note that d is an iterator, which means it mutates when you step through it. -- http://mail.python.org/mailman/listinfo/python-list