Как изменить имя переменной с помощью цикла for со списком строк - PullRequest
0 голосов
/ 07 июня 2019

Я хочу перебрать список с именами переменных, чтобы использовать эти переменные в качестве входных данных для функции.Я думаю, это более понятно, когда я предоставляю код.

data_low_wind= data.loc[data['Windspeed']<=10]
...#(high_wind and W,S,E have similar characteristic and not important for the problem)
data_N = data.loc[(data['WindDirection'] > 315) & (data['WindDirection'] <= 45)]
...
weather_condition = ['low_wind','high_wind','N','W','S','E']


 for i in weather_condition:
     if len(data_i) != 0:
        Errormeasure_i=table_Errormeasure(data_i,park_size)

Этот код еще не работает, поскольку значения weather_condition читаются как строки и, таким образом, не распознаются как дополнение к команде data_.Моя цель состоит в том, чтобы цикл for выдает следующее:

if len(data_low_wind)!=0:
   Errormeasure_low_wind=table_Errormeasure(data_low_wind,park_size)
#(and for the other elements of the list accordingly)

Является ли это в целом хорошим (приемлемым) подходом?Я читал, что вообще нежелательно менять имена переменных через цикл for.Другой подход, который я использовал, использовал map(lambda...), однако это также не дало желаемого результата.

weather_condition = ['low_wind','high_wind','N','W','S','E']
data= map(lambda x: 'data_'+x,weather_condition)
print(data)
[output] <map object at 0x00000180929D2860>

Я ценю любую помощь и разъяснение моей проблемы.(Надеюсь, этот вопрос не слишком дублирует. Другие вопросы не решили мою проблему)

1 Ответ

2 голосов
/ 07 июня 2019

Вы должны использовать словари.

wind_data = {
    'low_wind': data.loc[data['Windspeed']<=10],
    'N': data.loc[(data['WindDirection'] > 315) & (data['WindDirection'] <= 45)],
    ...
}
error_measures = {}

for key, value in wind_data.items():
     if len(value) != 0:
         error_measures[key] = table_Errormeasure(value, park_size)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...