Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 键中有键的字典_Python_Dictionary - Fatal编程技术网

Python 键中有键的字典

Python 键中有键的字典,python,dictionary,Python,Dictionary,我需要找到一种方法返回键1和键2的键“hw”内的第一个值,并对它们求和,但我想不出一种方法。它需要对任意数量的键起作用,不仅是1和2,而且即使有10个左右。1和2是学生,“hw”、“qz”等是作业类别,每个学生将有hw、qz、ex、pr,每个学生将有3个qz、3hw、3pr、3ex。我需要返回所有一年级、六年级、一年级、二年级的学生……等等 等级={ 1: { ‘pr’:[18,15], "hw":[16,27,25],, "qz":[8,10,5],, "ex":[83,93],, }, 2:

我需要找到一种方法返回键1和键2的键“hw”内的第一个值,并对它们求和,但我想不出一种方法。它需要对任意数量的键起作用,不仅是1和2,而且即使有10个左右。1和2是学生,“hw”、“qz”等是作业类别,每个学生将有hw、qz、ex、pr,每个学生将有3个qz、3hw、3pr、3ex。我需要返回所有一年级、六年级、一年级、二年级的学生……等等

等级={
1: {
‘pr’:[18,15],
"hw":[16,27,25],,
"qz":[8,10,5],,
"ex":[83,93],,
},
2: {
‘pr’:[20,18],
"hw":[17,23,28],,
"qz":[9,9,8],,
"ex":[84,98],,
},
}
更简洁(和Pythonicly):

返回键1和键2的键“hw”内的第一个值并求和

使用解释性名称有助于我们了解运动部件的含义。我通过猜测其含义,随意选择了描述性名称

简洁解
按年级和科目划分的成绩={
1: {
‘pr’:[18,15],
"hw":[16,27,25],,
"qz":[8,10,5],,
"ex":[83,93],,
},
2: {
‘pr’:[20,18],
"hw":[17,23,28],,
"qz":[9,9,8],,
"ex":[84,98],,
},
}
第1年和第2年的成绩总和=总和(
等级[0]用于中的等级(
按科目划分的成绩['hw']
年(按科目划分的年级)
按年级和科目划分的成绩。项目()
如果年份在[1,2]中
)
)
将其分解为几个较小的问题:

对一组值求和
sum\u of_grades=sum(值)
从列表集合中获取第一组值
设置第一等级的等级={
集合}中值的值[0]
为集合中的每个dict中的键
'hw'
生成一个值生成器
值列表的生成器=(
值dict['hw']用于中的值dict
_dicts.values()的集合
仅将字典缩减为键为
1
2
映射\u键\u 1和\u 2的\u值\u={
关键词:价值
对于值中的(键、值)_dict.items()
如果输入[1,2]}
冗长的解决方案
按年级和科目划分的成绩={
1: {
‘pr’:[18,15],
"hw":[16,27,25],,
"qz":[8,10,5],,
"ex":[83,93],,
},
2: {
‘pr’:[20,18],
"hw":[17,23,28],,
"qz":[9,9,8],,
"ex":[84,98],,
},
}
按科目划分的第1年和第2年的成绩={
年份:按科目划分的年级
年(按科目划分的年级)
按年级和科目划分的成绩。项目()
如果年在[1,2]}
第1年和第2年科目的成绩=(
按科目划分的成绩['hw']
按科目划分的年级
按科目。值()为第1年和第2年评分
第1年和第2年的成绩总和=总和(
年级[0]为年级(年级为年级,科目为1年级,科目为2年级)

你试过
等级[1]['hw'][0]+等级[2]['hw'][0]
了吗?是的,它可以工作,但是它需要工作于任意数量的键,不仅仅是1和2,而且即使有10个或更多的键,同样的通用技术也可以工作于任意数量的键。您能否提供更多关于您的需求的详细信息以及您尝试实现的示例。如果我理解正确,类似于
sum(Grades[key]['hw'][0]的内容适用于key-in-Grades.keys())
?从技术上讲,您甚至不需要创建列表Rafael,上面的代码对于任何正派的Python开发人员来说都非常容易阅读。列表理解是语言中经常使用的特征。而且它正好是一条单行线,这很好。
hw_sum = sum([grades[key]['hw'][0] for key in grades])