Python 如何用另一个字典中键相同的值填充字典值?

Python 如何用另一个字典中键相同的值填充字典值?,python,dictionary,Python,Dictionary,我有一个带键的字典(dictDemCLass),但值都是0,我计划用另一个字典(dictAvgGrade)的值填充它们。我需要在两本字典的键相同的地方这样做 dictAvgGrade = {k:sum(v)/4 for k,v in studentPerf.items()} dictDemClass = {k:0 for k in classes} 打印时(dictAvgGrade缩短): 最后,我想填写dictDemClass以显示每个类的平均值。因此,输出可以类似于: print(dic

我有一个带键的字典(dictDemCLass),但值都是0,我计划用另一个字典(dictAvgGrade)的值填充它们。我需要在两本字典的键相同的地方这样做

dictAvgGrade = {k:sum(v)/4 for k,v in studentPerf.items()}

dictDemClass = {k:0 for k in classes}
打印时(dictAvgGrade缩短):

最后,我想填写dictDemClass以显示每个类的平均值。因此,输出可以类似于:

print(dictDemClass)

{'junior': 77.46, 'senior': 83.82, 'sophomore': 86.79}
您可以使用将
dictAvgGrade
中的项目按“类”(即初级、高级等)分组。然后,您可以计算每个组的平均值,并将其添加到
dictDemClass

因此,对于您发布的示例,可以是以下内容:

from itertools import groupby

dictAvgGrade = {('Jeffery', 'male', 'junior'): 0.7749999999999999, ('Able', 'male', 'senior'): 0.8200000000000001, ('Don', 'male', 'junior'): 0.7974999999999999, ('Will', 'male', 'senior'): 0.7975000000000001}
dictDemClass = {'junior': 0, 'senior': 0, 'sophomore': 0}

def get_class(x):
    return x[0][2]

for k, g in groupby(sorted(dictAvgGrade.items(), key=get_class), key=get_class):
    group = list(g)
    class_avg = sum(x[1] for x in group)/len(group)
    dictDemClass[k] = class_avg

print(dictDemClass)
输出

{'senior': 0.8087500000000001, 'junior': 0.7862499999999999, 'sophomore': 0}
您可以使用将
dictAvgGrade
中的项目按“类”(即初级、高级等)分组。然后,您可以计算每个组的平均值,并将其添加到
dictDemClass

因此,对于您发布的示例,可以是以下内容:

from itertools import groupby

dictAvgGrade = {('Jeffery', 'male', 'junior'): 0.7749999999999999, ('Able', 'male', 'senior'): 0.8200000000000001, ('Don', 'male', 'junior'): 0.7974999999999999, ('Will', 'male', 'senior'): 0.7975000000000001}
dictDemClass = {'junior': 0, 'senior': 0, 'sophomore': 0}

def get_class(x):
    return x[0][2]

for k, g in groupby(sorted(dictAvgGrade.items(), key=get_class), key=get_class):
    group = list(g)
    class_avg = sum(x[1] for x in group)/len(group)
    dictDemClass[k] = class_avg

print(dictDemClass)
输出

{'senior': 0.8087500000000001, 'junior': 0.7862499999999999, 'sophomore': 0}

如果您知道
dictAvgGrade
始终是
dictDemClass
的子集,您可以这样做

dictDemClass.update(dictAvgGrade)
否则

如果您使用的是python3,您可以这样做

for key in (dictDemClass.keys() & dictAvgGrade.keys()):
    dictDemClass[key] = dictAvgGrade[key]
for key in (set(dictDemClass.keys()) & set(dictAvgGrade.keys())):
    dictDemClass[key] = dictAvgGrade[key]
如果你正在使用python2,你可以做类似的事情

for key in (dictDemClass.keys() & dictAvgGrade.keys()):
    dictDemClass[key] = dictAvgGrade[key]
for key in (set(dictDemClass.keys()) & set(dictAvgGrade.keys())):
    dictDemClass[key] = dictAvgGrade[key]

如果您知道
dictAvgGrade
始终是
dictDemClass
的子集,您可以这样做

dictDemClass.update(dictAvgGrade)
否则

如果您使用的是python3,您可以这样做

for key in (dictDemClass.keys() & dictAvgGrade.keys()):
    dictDemClass[key] = dictAvgGrade[key]
for key in (set(dictDemClass.keys()) & set(dictAvgGrade.keys())):
    dictDemClass[key] = dictAvgGrade[key]
如果你正在使用python2,你可以做类似的事情

for key in (dictDemClass.keys() & dictAvgGrade.keys()):
    dictDemClass[key] = dictAvgGrade[key]
for key in (set(dictDemClass.keys()) & set(dictAvgGrade.keys())):
    dictDemClass[key] = dictAvgGrade[key]


也许我不够清楚。dictAvgGrade拥有所有需要进入dictDemClass的信息,但它的键是元组,它们是我希望通过创建这个新字典过滤掉的其他信息。我需要dictAvgGrade的v值来填充dictDemClass的0,这两个字典中的键是等价的。对不起,我不知道我是否理解,你能添加两个字典的示例和期望的结果吗?不用担心,我做了一些更改。希望这更容易理解,也许我不够清楚。dictAvgGrade拥有所有需要进入dictDemClass的信息,但它的键是元组,它们是我希望通过创建这个新字典过滤掉的其他信息。我需要dictAvgGrade的v值来填充dictDemClass的0,这两个字典中的键是等价的。对不起,我不知道我是否理解,你能添加两个字典的示例和期望的结果吗?不用担心,我做了一些更改。希望这更容易理解。我可能太含糊了,请看我对另一个回答的评论。如果你能再给我一次,我将不胜感激look@JacobMyer正如alex所指出的,您可以添加示例数据和预期输出吗?我添加了更多信息,我认为这应该向您展示我的目标is@JacobMyer我希望更新后的答案更有帮助。@JacobMyer太棒了!如果这解决了你的问题,请考虑将答案标记为接受()。我可能过于含糊,看到我的评论其他回应。如果你能再给我一次,我将不胜感激look@JacobMyer正如alex所指出的,您可以添加示例数据和预期输出吗?我添加了更多信息,我认为这应该向您展示我的目标is@JacobMyer我希望更新后的答案更有帮助。@JacobMyer太棒了!如果这解决了你的问题,请考虑将答案标记为接受()。因此,在 DeDeMeCase中的最终值是<代码> DigaTVGeals<代码>中所有对应值的平均值吗?是的,这就是IM希望实现的。显然,我文章末尾的那些只是一个例子,
dictDemClass
中的最终值是
dictAvgGrade
中所有相应值的平均值?是的,这就是我希望实现的,显然我文章末尾的那些只是一个例子