【问题标题】:Create a dictionary while keeoping the keys from another dictionary. - Python创建一个字典,同时保留另一个字典中的键。 - Python
【发布时间】:2021-06-28 16:26:24
【问题描述】:

我希望能够使用从运行代码中获得的值创建一个新字典,但我想保留第一个字典中的值。

import math
d = {'bob':[5,0,0,1,3], 'toms':[3,0,5,3,0], 'sammy': [0,0,0,1,0], 'ted':[5,0,0,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

我的输出是: 18, 1, 40 这就是“总”变量的值。

我希望这些数字成为我的新字典 (highScores) 中的值,同时保留旧字典 (d) 中的键。

新字典不应具有用户输入的名称。所以如果我输入“bob”,他不应该出现在新字典中,等等。

新的字典输出应该是这样的: highScores = {'toms':18, 'sammy': 1, 'ted': 40}

谢谢!

【问题讨论】:

  • 很难弄清楚你的变量是什么。考虑给他们更多描述性的名称,而不是dvab

标签: python dictionary dot-product


【解决方案1】:
for key in d.keys():
    if key != whatName:
        high_scores[key] = sum(d[key])

【讨论】:

  • 谢谢!这有助于跳过用户输入的名称,所以谢谢你。但是我的键值不正确,我希望它在这里显示总变量。关于如何做到这一点的任何想法?
【解决方案2】:
d = {'bob':[5,0,0,1,3], 'toms':[3,0,5,3,0], 'sammy': [0,0,0,1,0], 'ted':[5,0,0,6,3]}
highScores = {}

for x in d.keys():
    highScores[x] = sum(d[x])

print(highScores)

输出是: {'bob': 9, 'toms': 11, 'sammy': 1, 'ted': 14}

在这里,我让 highScores 使用 d 中的所有名称或“键”,并将数组相加,使用 d.keys() 或 d.values() 来解析 dicts。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 2022-11-15
    • 1970-01-01
    • 2019-05-08
    • 2022-06-23
    相关资源
    最近更新 更多