Another newbie question.
There must be a cleaner way to do this in Python:
#### section of C looking Python code #### a = [[1,5,2], 8, 4] a_list = {} i = 0 for x in a: if isinstance(x, (int, long)): x = [x,] for w in [y for y in x]: i = i + 1 a_list[w] = i print a_list #####
The code prints what I want but it looks so "C-like". How can I make it more Python like?
Don't know what version of Python you're using, but if you're using 2.4 (or with a few slight modifications, with 2.3), you can write:
py> dict((item, i+1) ... for i, item in enumerate( ... a_sub_item ... for a_item in a ... for a_sub_item ... in isinstance(a_item, (int, long)) and [a_item] or a_item)) {8: 4, 1: 1, 2: 3, 4: 5, 5: 2}
Basically, I use a generator expression to flatten your list, and then use enumerate to count the indices instead of keeping the i variable.
Steve -- http://mail.python.org/mailman/listinfo/python-list