[Tutor] Dictionary Comprehensions
spir
denis.spir at free.fr
Sat Dec 5 11:25:21 CET 2009
Hugo Arts <hugo.yoshi at gmail.com> dixit:
> bc = {y: x for x, y in enumerate("khalid")}
>
> Note that your output is like so:
> {'a': 2, 'd': 5, 'i': 4, 'h': 1, 'k': 0, 'l': 3}
>
> The first character in your original string gets a zero, the second a
> one, so on and so forth. I'm hoping that's what you meant. If you
> really want this:
>
> {'a': 0, 'd': 1, 'i': 2, 'h': 3, 'k': 4, 'l': 5}
>
> I'm not sure how to do that programmatically.
# first need a list of sorted chars
# otherwise python cannot guess what order you mean:
chars = sorted(list("khalid"))
print chars # ==> ['a', 'd', 'h', 'i', 'k', 'l']
# enumerate gives a list of (index, value) pairs
# from which you can construct a dict:
#~ dc = {index:char for (index,char) in enumerate(chars)}
# or (python version < 3)
dc = dict((index,char) for (index,char) in enumerate(chars))
print dc # ==> {0: 'a', 1: 'd', 2: 'h', 3: 'i', 4: 'k', 5: 'l'}
Denis
________________________________
la vita e estrany
http://spir.wikidot.com/
More information about the Tutor
mailing list