我想將字典中的分數乘以特定鍵的引數中給出的整數。如果整數不是用于鍵,那么我想按原樣回傳分數。
def main():
scores ={'Bella': [2, 8, 3], 'Jack'= [8, 9, 7, 4]}
multiply_scores(scores, 'Bella', 3)
print(scores['Bella'])
print(scores['Jack'])
預期輸出:
[6, 24, 9]
[8, 9, 7, 4]
我目前的輸出是:
[6, 24, 9]
[24, 27, 21, 12]
如何修復我的代碼以獲得預期的輸出:
def multiply_scores(scores, name, number):
for values in scores.values():
for index in range(0,len(values)):
values[index] = round((values[index] * number))
return values
uj5u.com熱心網友回復:
你讓這件事變得比它需要的更難。
def multiply_scores(scores, name, number):
scores[name] = [i*number for i in scores[name]]
uj5u.com熱心網友回復:
由于名稱是字典中的一個鍵,因此使用它來獲取串列。當您分配給切片物件時,串列將迭代右側的事物,這是對串列進行就地修改的便捷方式。
def multiply_scores(scores, name, number):
lst= scores[name]
lst[:] = (v * number for v in lst)
def main():
scores ={'Bella': [2, 8, 3], 'Jack':[8, 9, 7, 4]}
multiply_scores(scores, 'Bella', 3)
print(scores['Bella'])
print(scores['Jack'])
main()
uj5u.com熱心網友回復:
我認為您應該從字典中獲取串列并更新該串列。并在此之前檢查字典中的鍵。
def multiply_scores(scores, name, number):
try:
scores[name] = [i * number for i in scores[name]]
return scores
except KeyError:
return scores
uj5u.com熱心網友回復:
使用 Tim 所說的串列理解很棒(并且可以說更有效),但是如果您想要更簡單的代碼,更接近您發布的內容,您可以看到:
目前,您的name引數沒有做任何事情……在更改給定名稱的值之前,您必須先使用它來檢查字典中的名稱。我會修改你的功能是這樣的:
def multiply_scores(scores, name, number):
for key, values in scores.items():
if key == name:
for index in range(0,len(values)):
values[index] = round((values[index] * number))
return values
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/315998.html
上一篇:合并字典串列以洗掉所有重復項
