问题描述
我希望能够使用运行代码获得的值创建一个新字典,但我想保留第一个字典中的值。
import math
d = {'bob':[5,1,3],'toms':[3,5,3,0],'sammy': [0,'ted':[5,6,3]}
highscores = {}
total = 0
v =0
whatName = str(input("what name do you want? "))
for i in d:
a = d[whatName] #gives us whatNames values
b = d[i]
if i == whatName: #skips what name is
pass
else:
for k in range(len(b)):
#print(k,end = ' ')
value = a[k]*b[k]
total= value + total
print(total)
total = 0
我希望这些数字成为我新字典中的值 (highscores),同时保留旧字典中的键 (d)。
新词典不应具有用户输入的名称。所以如果我输入“bob”,他就不应该出现在新词典中,等等。
新的字典输出应该是这样的: highscores = {'toms':18,'sammy': 1,'ted': 40}
谢谢!
解决方法
d = {'bob':[5,1,3],'toms':[3,5,3,0],'sammy': [0,'ted':[5,6,3]}
highScores = {}
for x in d.keys():
highScores[x] = sum(d[x])
print(highScores)
输出是: {'鲍勃':9,'汤姆斯':11,'萨米':1,'泰德':14}
这里我让 highScores 使用 d 中的所有名称或“键”,并将数组相加,使用 d.keys() 或 d.values() 来解析 dicts。
,for key in d.keys():
if key != whatName:
high_scores[key] = sum(d[key])