У меня проблема с словарем python.Значение обновления для словаря Python
import random
values = {"A" : [2,3,4], "B" : [2], "C" : [3,4]}
# this variable have to store as keys all the values in the lists kept by the variable values, and as values a list of numbers
# example of dictionary :
# {"2" : [2, 6 ,7 ,8, 8], "3" : [9, 7, 6, 5, 4], "4" : [9, 7, 5, 4, 3]}
dictionary = {}
for x in values.keys():
listOfKeyX = values[x]
newValues = []
for index in range (0, 5):
newValue = random.randint(0,15)
newValues.append(newValue)
for value in listOfKeyX:
if value in dictionary.keys():
for index in range (0, 5):
#i want to update a value in dictionary only if the "if" condition is satisfied
if(newValues[index] < dictionary[value][index]):
dictionary[value][index] = newValues[index]
else:
dictionary.setdefault(value, [])
dictionary[value] = newValues
print dictionary
У меня возникла проблема со значениями словаря, когда я пытаюсь их изменить. Я хочу изменить только пары key-value, которые я выбрал с помощью key = value, но этот фрагмент кода меняет все значения словаря. Можете ли вы предложить мне решение этой проблемы?
Я пытаюсь объяснить, что делает алгоритм: выполняет итерацию по ключам переменной значений и сохраняет в переменной listOfKeyX список, связанный с ключом. Он создает некоторые случайные значения, хранящиеся в newValues []. После этого он повторяется в спискеOfKeyX , если значение, взятое из списка, уже не существует в словаре.keys(), он сохраняет все список newValues в dictionaty [значение], , если значение, взятое из списка, уже существует в dictionary.keys() занимает список, хранящийся в словаре [значение], и пытается каким-то образом его обновить.
Что именно делает этот код? Что означает 'listValues'' .keys'? Что такое 'hashFamily'? 'MaxFunction'? – jonrsharpe
hashFamily - это просто функция, которая возвращает хеш-значение x на основе hashedIndex, maxFunction - это максимальное количество итераций, поэтому это значение costant. listValues - это функция, которая возвращает набор слов или число, и возвращает объект словаря. –
Итак, если он возвращает словарь, почему 'list' в его имени? Пожалуйста, прочитайте http://stackoverflow.com/help/mcve – jonrsharpe