Home > other >  create dynamic variable names in Python
create dynamic variable names in Python

Time:08-09

Here is a very simple example of creating a variable in Python:

model_result = 5

Now the problem is that, I need to run a same snippet of codes for a lot of model scenarios, and save out the final result from each scenario with a corresponding name.

When using this snippet of codes, I will only update the chosen scenario using a hashtag (#), and keep the remaining analysis codes untouched. For example:

# pick a scenario
chosen_scenario = "baseline"
#chosen_scenario = "test1"
#chosen_scenario = "test2"
#chosen_scenario = "test3"
#chosen_scenario = "test4"
#chosen_scenario = "test5"
print("Chosen scenario:",chosen_scenario)

# move to the corresponding directory and get the files
Target_files = sorted(glob.glob("C:/model-outputs/" chosen_scenario "_output/model_output_*.csv"))

# Then run through some fixed routine analysis

At the end of the snippet, I want to save out the variable direclty as something like: model_result_baseline,model_result_test1,model_result_test2, instead of manually typing them every time. Because there are a lot of scenarios.

Is this possible in Python?

Many thanks.

CodePudding user response:

I recommend using a dictionary to achieve what you are trying to do:

results = {}
scenarios = ['baseline', 'test1', 'test2', 'test3']
for s in scenarios:
    results[s] = sorted(glob.glob(f"C:/model-outputs/{s}_output/model_output_*.csv"))

CodePudding user response:

You question needs clarification but is below what you ask for ?

Put scenarios in list

scenarios = ["baseline", "test1"]

then run your script in for loop;

for scenario in scenarios:
    Target_files = sorted(glob.glob("C:/model-outputs/"   scenario   "_output/model_output_*.csv"))

Also when you put them in list instead using hashtag to comment out other scenarios you can access the scenario you want by using list index;

scenarios[index]
  • Related