ПИТОН: «Пока», чтобы заполнить диктовку все большим именем и значением - PullRequest
0 голосов
/ 12 марта 2019

В этот момент я вырвал свои волосы ... и искал в Интернете ответы, и лучшее, что я нашел, - это сделать отдельный файл для словаря и импортировать его при необходимости. Однако, будучи очень упрямым, я хочу заполнить это в стиле питона.

Итак, чтобы быстро объяснить. Я хочу создать пользовательский словарь, в который будет добавлено X записей в формате dict, а формат (например) {"Value_1": 1}, а следующая запись будет {"Value_2": 2}. Однако, если мне нужно 100 записей, я не хочу копировать и вставлять целое .update при запуске сценария, а вместо этого иметь пользовательскую функцию, в которой можно настроить value_max (см. Мой код ниже) и предварительно настроить собственный размер. Тираж сделан. Имя должно остаться таким же, что часть, которую я не нуждаюсь в настройке (просто нужна часть "_ увеличенный_номер_ здесь " после имени), но я просто хочу, чтобы этот dict имел указанное количество записей. Приветствуются альтернативные способы достижения этого, поэтому я хочу получить определенное значение, скажем, 80, и напечатать «Value_80» (пример). Заранее спасибо!

В любом случае, вот моя попытка, которая с треском провалилась:

value_max = 10
dict_point = 1
custom_dict = {}
current_value = 1
value_name = "Example"
value_number = 1 
value_num_str = str(value_number)

test_a = custom_dict
print(test_a)

while dict_point <= value_max:
    custom_dict.update({value_name + value_num_str:current_value})
    value_number += 1
    current_value += 1
    dict_point += 1

test_b = custom_dict
print(test_b)

Выход test_a равен {} Выход test_b равен {Example_1:10}

Ответы [ 3 ]

0 голосов
/ 12 марта 2019

Вы определяете value_num_str один раз, вверху вашего кода. В этот момент value_num_str указывают на строку "1".

Вам нужно сделать присваивание value_num_str = str(value_num) внутри цикла while - или, более эффективно, сделать это внутри вызова update. В противном случае его значение никогда не изменится. И поскольку метод update заменяет записи словаря, если ключ уже существует, в итоге получается одна и та же запись в словаре.

Простое написание строки update как

custom_dict.update({value_name + str(value_num):current_value}) value_number += 1

должен сделать трюк.

0 голосов
/ 12 марта 2019

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

value_name = "Example"
custom_dict = {}
dict_point = 1
value_max = 10

while dict_point <= value_max:
    custom_dict[value_name + "_{}".format(dict_point)] = dict_point
    dict_point += 1

test_b = custom_dict
print(test_b)
0 голосов
/ 12 марта 2019

Вы забыли снова преобразовать value_number в строку, чтобы он продолжал обновлять те же значения.

value_max = 10
dict_point = 1
custom_dict = {}
current_value = 1
value_name = "Example"
value_number = 1 
value_num_str = str(value_number)

test_a = custom_dict
print(test_a)

while dict_point <= value_max:
    custom_dict.update({value_name + value_num_str:current_value})
    value_number += 1
    value_num_str = str(value_number)
    current_value += 1
    dict_point += 1

test_b = custom_dict
print(test_b)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...