It does not look nice at all, mainly because you are asking either asking the question upside down, or not providing enough information.
If a and b are of vastly different sizes, say so. Otherwise, think about your algorithm, and realize you are asking for things in b if they exist in a: > dict( [ i for i in b.items() if i[0] in a ] ) {'a': 0, 'c': 1, 'd': 2} - another mike. [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Mike: > Many thanks for your solution. It looks really nice. > > > > Mike Erickson wrote: >> * [EMAIL PROTECTED] ([EMAIL PROTECTED]) wrote: >> > Hello: >> > I have next dictionaries: >> > a={'a':0, 'b':1, 'c':2, 'd':3} >> > b={'a':0, 'c':1, 'd':2, 'e':3} >> > I want to put in a new dictionary named c all the keys that are in b >> > and re-sequence the values. The result I want is: >> > c={'a':0, 'c':1, 'd':2} >> > How can I do this with one line of instruction? >> > >> > I attempted the next but the output is not the expected: >> > c=dict([(k,v) for v,k in enumerate(a) if b.has_key(k)]) >> > erroneously (for me) gets: >> > {'a': 0, 'c': 2, 'd': 3} >> >> I am not 100% I understand your questions, but k,v are being pulled from >> a, try: >> >> c=dict([(k,b[k]) for v,k in enumerate(a) if b.has_key(k)]) >> >> mike > -- http://mail.python.org/mailman/listinfo/python-list