python - Creating variables using loops or lists. Dynamic Loops are bad? -
so i've looked through stackoverflow , feel similar questions have been asked, wasn't able quite tailor answers problem (sorry!).
from other threads, have gathered 1) dynamic loops bad 2) list comprehension or dictionaries might me?
what want end with
grant1 = median(df.query('income < 25000')['grant'] grant2 = median(df.query('income > 25000 , income < 50000')['grant'] grant3 = median(df.query('income > 50000 , income < 75000')['grant'] grant4 = ... grant5 = ... funding1 = median(df.query('income < 25000')['funding'] funding2 = median(df.query('income > 25000 , income < 50000')['funding'] funding3 = median(df.query('income > 50000 , income < 75000')['funding'] funding4 = ... funding5= ...
sort of want do
source = ['grant', 'funding'] x in source: x1 = median(df.query('income < 25000')['x'] x2 = median(df.query('income > 25000 , income < 50000')['x'] x3 = .... x4 = .....
any suggestions, or confusions regarding trying here?
thanks!
you have bunch variables want assign to, names might these: grant0, funding97, grant42, grant26, funding27
so instead of having seperate variables, put data 1 variable stores them this:
source = {'grant': [], 'funding': []'}
so instead of accessing data variable grant0
, can source['grant'][0]
. example, instead of using funding97
, use source['funding'][97]
if understand question correctly, may want:
income_brackets = [(0, 25000), (25000, 50000)] source = {'grant': [], 'funding': []} #hard understand one-liner #source = {key: [median(df.query('income > {} , income < {}'.format(lower, upper))[key]) lower, upper in income_brackets] key in source} #easy understand three-liner lower, upper in income_brackets: key in source: source[key].append(median(df.query('income > {} , income < {}'.format(lower, upper))[key]))
how list comprehensions work:
>>> foo = [] >>> in range(10): foo.append(i) >>> foo [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> bar = [i in range(10)] >>> bar [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
dictionary comprehensions work similar list comprehensions, except have key value pairs.
step-by-step explanation of solution using interpreter:
>>> income_brackets = [(0, 25000), (25000, 50000)] >>> source = {'grant': [], 'funding': []} >>> lower, upper in income_brackets: print(lower, upper) 0 25000 25000 50000 >>> lower, upper in income_brackets: key in source: print(lower, upper, key) 0 25000 grant 0 25000 funding 25000 50000 grant 25000 50000 funding >>> lower, upper in income_brackets: key in source: source[key].append(5) >>> source {'grant': [5, 5], 'funding': [5, 5]} >>> source['grant'][0] 5 >>> source['grant'][1] 5 >>> source['funding'][0] 5 >>> source['funding'][1] 5
Comments
Post a Comment