【问题标题】:Iterate over list inside dictionary遍历字典内的列表
【发布时间】:2020-07-18 00:06:31
【问题描述】:

我是 Python 新手,我希望在字典中的列表中遍历字典(我知道这很令人困惑)。

my_dict = {"John": [{"class": "math", "score": 100, "year": 2014}, {"class": "english", "score": 85, "year": 2015}], 
"Timmy": [{"class": "math", "score": 87, "year": 2014}, {"class": "english", "score": 91, "year": 2015}], 
"Sally":[{"class": "math", "score": 95, "year": 2014}]}

我需要创建一个包含学生姓名及其综合分数的新字典(Sally 只有一个分数)。

输出如下:

new_dict = {"John": 185, "Timmy": 178, "Sally": 95}

任何帮助或指导将不胜感激!

【问题讨论】:

标签: python list dictionary list-comprehension dictionary-comprehension


【解决方案1】:

使用字典理解:

{k: sum(x['score'] for x in v) for k, v in my_dict.items()}

代码

my_dict = {"John": [{"class": "math", "score": 100, "year": 2014}, {"class": "english", "score": 85, "year": 2015}], 
"Timmy": [{"class": "math", "score": 87, "year": 2014}, {"class": "english", "score": 91, "year": 2015}], 
"Sally":[{"class": "math", "score": 95, "year": 2014}]}

new_dict = {k: sum(x['score'] for x in v) for k, v in my_dict.items()}
# {'John': 185, 'Timmy': 178, 'Sally': 95}

【讨论】:

    【解决方案2】:

    我试着写一个程序来解决这个问题。

    score_dict = {}
    for name in my_dict:
        score_dict[name] = 0
        class_items = my_dict[name]
        for class_item in class_items:
            score_dict[name] += class_item['score']
    
    print score_dict
    

    【讨论】:

      猜你喜欢
      • 2019-11-29
      • 1970-01-01
      • 1970-01-01
      • 2018-08-22
      相关资源
      最近更新 更多