我有一個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選擇的對鍵值,但這段代碼會更改所有字典值。 你能爲我提出解決這個問題的解決方案嗎?
我試着解釋一下算法的作用: 它在值變量的鍵上進行迭代,並且它保留變量listOfKeyX鏈接到鍵的列表。 它創建了由newValues []保留的一些隨機值。 之後它在listOfKeyX 上進行迭代,如果從列表中取得的值不存在於dictionary.keys()中,則它存儲dictionaty [value]中的所有newValues列表, 如果從列表中取得的值已經存在於dictionary.keys()它需要由dictionary [value]保存的列表並嘗試以某種方式升級它。
這段代碼究竟在幹什麼?什麼'listValues'有'.keys'?什麼是'hashFamily'? 'maxFunction'? – jonrsharpe 2015-04-01 15:03:34
hashFamily它只是一個基於hashedIndex返回x的哈希值的函數,maxFunction是最大迭代次數,因此它是一個costant值。 listValues它是一個返回一組單詞或數字的函數,它返回一個字典對象。 – 2015-04-01 15:11:03
所以,如果它返回一個字典,爲什麼在它的名字是「列表」?請閱讀http://stackoverflow.com/help/mcve – jonrsharpe 2015-04-01 15:11:58