C
Chris Angelico
Apologies for interrupting the vital off-topic discussion, but I have
a real Python question to ask.
I'm doing something that needs to scan a dictionary for elements that
have a particular beginning and a numeric tail, and turn them into a
single list with some processing. I have a function parse_kwdlist()
which takes a string (the dictionary's value) and returns the content
I want out of it, so I'm wondering what the most efficient and
Pythonic way to do this is.
My first draft looks something like this. The input dictionary is
called dct, the output list is lst.
lst=[]
for i in xrange(1,10000000): # arbitrary top, don't like this
try:
lst.append(parse_kwdlist(dct["Keyword%d"%i]))
except KeyError:
break
I'm wondering two things. One, is there a way to make an xrange object
and leave the top off? (Sounds like I'm risking the numbers
evaporating or something.) And two, can the entire thing be turned
into a list comprehension or something? Generally any construct with a
for loop that appends to a list is begging to become a list comp, but
I can't see how to do that when the input comes from a dictionary.
In the words of Adam Savage: "Am I about to feel really, really stupid?"
Thanks in advance for help... even if it is just "hey you idiot, you
forgot about X"!
Chris Angelico
a real Python question to ask.
I'm doing something that needs to scan a dictionary for elements that
have a particular beginning and a numeric tail, and turn them into a
single list with some processing. I have a function parse_kwdlist()
which takes a string (the dictionary's value) and returns the content
I want out of it, so I'm wondering what the most efficient and
Pythonic way to do this is.
My first draft looks something like this. The input dictionary is
called dct, the output list is lst.
lst=[]
for i in xrange(1,10000000): # arbitrary top, don't like this
try:
lst.append(parse_kwdlist(dct["Keyword%d"%i]))
except KeyError:
break
I'm wondering two things. One, is there a way to make an xrange object
and leave the top off? (Sounds like I'm risking the numbers
evaporating or something.) And two, can the entire thing be turned
into a list comprehension or something? Generally any construct with a
for loop that appends to a list is begging to become a list comp, but
I can't see how to do that when the input comes from a dictionary.
In the words of Adam Savage: "Am I about to feel really, really stupid?"
Thanks in advance for help... even if it is just "hey you idiot, you
forgot about X"!
Chris Angelico