我有一本字典,它的值是串列:
scores = {'Anna': [127, 150, 168], 'Jamie': [188, 176, 190]}
如何在不創建新字典或新串列的情況下將串列中的每個值乘以 0.5?
輸出:
scores = {'Anna': [63.5, 75, 84], 'Jamie': [94, 88, 95]}
我試過了:
for num in scores.values():
for x in num:
x *= 0.5
return x
uj5u.com熱心網友回復:
迭代items并使用enumerate以下就地更新:
scores = {'Anna': [127, 150, 168], 'Jamie': [188, 176, 190]}
for key, values in scores.items():
for i, value in enumerate(values):
values[i] = value * 0.5
print(scores)
輸出
{'Anna': [63.5, 75.0, 84.0], 'Jamie': [94.0, 88.0, 95.0]}
uj5u.com熱心網友回復:
您可以使用字典理解和串列理解的組合 -
frac = 0.5
scores2 = {k: [frac*score for score in v] for k, v in scores.items()}
uj5u.com熱心網友回復:
您可以直接在值串列上使用切片分配,這是一種突變,不需要任何重新系結(或其他參與)鍵:
for nums in scores.values():
nums[:] = [x * 0.5 for x in nums]
# or if you like it cryptic:
# nums[:] = map(.5.__mul__, nums)
注意
x *= 0.5
只是回圈變數的重新分配,并沒有反映在串列中。
uj5u.com熱心網友回復:
如何在不創建新字典或新串列的情況下將串列中的每個值乘以 0.5?
像下面這樣
scores = {'Anna': [127, 150, 168], 'Jamie': [188, 176, 190]}
for values in scores.values():
for idx in range(0,len(values)):
values[idx] = values[idx] * 0.5
print(scores)
輸出
{'Anna': [63.5, 75.0, 84.0], 'Jamie': [94.0, 88.0, 95.0]}
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/311489.html
