Словарь добавляет только последнюю пару ключ-значение в цикле for
У меня есть цикл for, который проходит через список городов и присваивает каждому из них total_city_value
. Я пытаюсь получить каждое уникальное значение total_city_value, созданное в цикле for, добавленное в словарь, однако, похоже, что в цикле for сохраняется только конечное значение total_city_value, когда я печатаю словарь.
for broad_variable in broad_variable_list:
# check if the current broad variable is equal to the first broad variable the user chose
if broad_variable == broad_variable1:
# if the city's specific variable is equal to the specific variable the user chose get the value of it based on it's ranking weight
if City.objects.values_list(broad_variable, flat=True).filter(city=cities).first() == specific_variable1:
city_variable1_value = 1 * weight_variable1
#print("city_variable1_value",city_variable1_value)
# else assign a value of 0
else:
city_variable1_value = 0
# check if the current broad variable is equal to the second broad variable the user chose
if broad_variable == broad_variable2:
# if the city's specific variable is equal to the specific variable the user chose get the value of it based on it's ranking weight
if City.objects.values_list(broad_variable, flat=True).filter(city=cities).first() == specific_variable2:
city_variable2_value = 1 * weight_variable2
# else assign a value of 0
else:
city_variable2_value = 0
total_city_value = city_variable1_value + city_variable2_value
city_value_dictionary[cities] = total_city_value
print(city_value_dictionary)
Возможно, это так же просто, как:
city_value_dictionary[cities] += total_city_value
для добавления нового значения к существующему? Вам может понадобиться проверить, является ли это первым разом для данного значения cities
, потому что в первый раз не будет записи для добавления. Что-то банальное вроде:
try:
city_value_dictionary[cities] += total_city_value
except KeyError:
city_value_dictionary[cities] = total_city_value
или:
total = city_value_dictionary.get(cities, 0)
city_value_dictionary[cities] = total + total_city_value