Python 如何用另一个字典中键相同的值填充字典值?
我有一个带键的字典(dictDemCLass),但值都是0,我计划用另一个字典(dictAvgGrade)的值填充它们。我需要在两本字典的键相同的地方这样做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
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太棒了!如果这解决了你的问题,请考虑将答案标记为接受()。因此,在
dictDemClass
中的最终值是dictAvgGrade
中所有相应值的平均值?是的,这就是我希望实现的,显然我文章末尾的那些只是一个例子