如何在python字典中的名称中添加多个整数?

时间:2015-01-21 09:12:20

标签: python dictionary

这是我的代码,我需要计算每个学生的平均分数,但这部分代码是不正确的。这是我需要修复的明星部分

while choice == 'av'.lower():
    if schClass == '1':
      schClass = open("scores1.txt", 'r')
      li = open("scores1.txt", 'r')
      data = li.read().splitlines()
      for li in data:
        name = li.split(":")[0]
        score = li.split(":")[1]
        **if name not in diction1:
            diction1[name] = score
        elif name in diction1:
             diction1[name] = int(score) + diction1[name]**

3 个答案:

答案 0 :(得分:0)

文件是什么样的?

A: 10
B: 10
A: 20
B: 12

A: 10 20
B: 10 12

此解决方案适用于两种格式。

首先,建立一个包含所有分数的列表:

all_scores = {}
while choice == 'av':
    if schClass == '1':
        with open("scores1.txt", 'r') as f:
            for line in f:
                name, scores = li.split(':', 1)
                name_scores = all_scores.setdefault(name, [])
                for score in scores.split():
                    name_scores.append(int(score))

然后计算平均值(转换为浮点数以获得精确平均值):

averages = {name: float(sum(scores)) / len(scores)
           for name, scores in all_scores.iteritems()}

答案 1 :(得分:0)

你的问题不清楚;换句话说, 是什么意思 向字典键添加多个整数?这部分令人困惑,因为你的代码

diction1[name] = int(score) + diction1[name]**

似乎暗示您想要将字符串(score)添加到整数(int(score)),这是不可能的。如果要在列表中并排添加它们,那么,如果得分为' 4'结果为['4', 4],那么您所要做的就是更改最后一个这几行。

if name not in diction1:
    diction1[name] = [score, int(score)]

此外,eumiro对您的代码 的其他更改是很好的建议 ,因此如果您不确定,请记住这些并阅读文档它是如何运作的。

答案 2 :(得分:-1)

diction1持有list

if name not in diction1:
    diction1[name] = [score]
else:
    diction1[name].append(int(score))