Python для l oop функция zip имеет больше словарей вывода, чем ключей ввода из старых словарей - PullRequest
0 голосов
/ 19 июня 2020

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

Я подумываю использовать a для l oop и функция почтового индекса. Но в for l oop количество ключей, используемых для доступа к спискам в старых словарях (т.е. key1, key2 ... key4 в приведенном ниже коде), меньше, чем количество списков, которые будут храниться в новых словари, поэтому я не знаю, как новые списки (например, x_scaler, y_scaler) могут быть назначены первым двум словарям (например, x_scaler_di c и y_scaler_di c).

x_scaler_dic = {}
y_scaler_dic = {}
x_train_scaled_dic = {}
x_test_scaled_dic = {}
y_train_scaled_dic = {}
y_test_scaled_dic = {}

for key1, key2, key3, key4) in zip(x_train_dic, x_test_dic, y_train_dic, y_test_dic):
    x_scaler, y_scaler, x_train_scaled, x_test_scaled, y_train_scaled, y_test_scaled = scale(x_train_dic[key1], x_test_dic[key2], y_train_dic[key3], y_test_dic[key4])
    x_scaler_dic[key?], y_scaler_dic[key?], x_train_scaled_dic[key1], x_test_scaled_dic[key2], y_train_scaled_dic[key3], y_test_scaled_dic[key4] = x_scaler, y_scaler, x_train_scaled, x_test_scaled, y_train_scaled, y_test_scaled

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

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 19 июня 2020

Мне удалось ответить на свой вопрос. Как предложил Амитар Иррон, вы можете использовать ключ одного словаря, если словари имеют одинаковые ключи. Окончательный код:

x_scaler_dic = {}
y_scaler_dic = {}
x_train_scaled_dic = {}
x_test_scaled_dic = {}
y_train_scaled_dic = {}
y_test_scaled_dic = {}

for key in x_train_dic:
    x_scaler, y_scaler, x_train_scaled, x_test_scaled, y_train_scaled, y_test_scaled = scale(x_train_dic[key], x_test_dic[key], y_train_dic[key], y_test_dic[key])
    x_scaler_dic[key], y_scaler_dic[key], x_train_scaled_dic[key], x_test_scaled_dic[key], y_train_scaled_dic[key], y_test_scaled_dic[key] = x_scaler, y_scaler, x_train_scaled, x_test_scaled, y_train_scaled, y_test_scaled

print(x_scaler_dic.keys())
print(y_scaler_dic.keys())
print(x_train_scaled_dic.keys())
print(x_test_scaled_dic.keys())
print(y_train_scaled_dic.keys())
print(y_test_scaled_dic.keys())

print result:
dict_keys(['FNS', 'Ohara'])
dict_keys(['FNS', 'Ohara'])
dict_keys(['FNS', 'Ohara'])
dict_keys(['FNS', 'Ohara'])
dict_keys(['FNS', 'Ohara'])
dict_keys(['FNS', 'Ohara'])
...