a clean way to define dictionary
Kendear
kendear at nospam.com
Thu Jun 19 05:16:17 EDT 2003
Alex Martelli wrote:
> for key, value in [ [lst[i],list[i+1]] for i in range(0,len(lst),2) ]:
>
> or, as others have indicated, in Python 2.3 you could slice lst[::2]
> and lst[1::2] to get the even and odd items and zip them up again:
>
> for key, value in zip(lst[::2], lst[1::2]):
thanks very much for all the hints...
they have helped a lot.
I'd prefer not to rely on the newline
separating each key value pair or any limitation
of the white spaces... so i tried
the following and they seem to work fine...
>>> lst = """
a 1 b 1000
foo 3 foo2 2000
bar 234 bar2 1200
joe 321 cool 2
"""
>>> lst = lst.split()
>>> dict([(lst[i], eval(lst[i+1])) for i in range(0, len(lst), 2)])
{'a': 1, 'bar2': 1200, 'bar': 234, 'foo': 3, 'cool': 2, 'b': 1000, 'foo2': 2000, 'joe': 321}
>>> dict([(lst.pop(0), eval(lst.pop(0))) for i in range(0, len(lst), 2)])
{'a': 1, 'bar2': 1200, 'bar': 234, 'foo': 3, 'cool': 2, 'b': 1000, 'foo2': 2000, 'joe': 321}
# or the above can be
>>> dict([(lst.pop(0), eval(lst.pop(0))) for i in range(len(lst)/2)])
{'a': 1, 'bar2': 1200, 'bar': 234, 'foo': 3, 'cool': 2, 'b': 1000, 'foo2': 2000, 'joe': 321}
More information about the Python-list
mailing list