Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.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 3.x 如果密钥重复,如何在字典中同时添加两个值?_Python 3.x_List_File_Dictionary - Fatal编程技术网

Python 3.x 如果密钥重复,如何在字典中同时添加两个值?

Python 3.x 如果密钥重复,如何在字典中同时添加两个值?,python-3.x,list,file,dictionary,Python 3.x,List,File,Dictionary,所以我有一个项目,它要求用户输入.txt文件的数量,这些文件的标题是“天”,然后是升序。代码中的格式是运动/活动(键),然后是逗号和从事运动的人数(值)。我想要的是它从文本文件中输出所有运动,如果活动(键)被复制,那么它会将做运动的人(值)相加。最重要的是,我需要参与的总人数(所有价值加在一起) 输入 day1.txt swimming,1000 fencing,200 athletics,600 gymnastics,1200 tennis,500 diving,600 swimming,1

所以我有一个项目,它要求用户输入.txt文件的数量,这些文件的标题是“天”,然后是升序。代码中的格式是运动/活动(键),然后是逗号和从事运动的人数(值)。我想要的是它从文本文件中输出所有运动,如果活动(键)被复制,那么它会将做运动的人(值)相加。最重要的是,我需要参与的总人数(所有价值加在一起)

输入

day1.txt

swimming,1000
fencing,200
athletics,600
gymnastics,1200
tennis,500
diving,600
swimming,1200
tennis,500
rugby,900
handball,500
hockey,2300
trampoline,200
swimming,400
gymnastics,1200
fencing,100
diving,400
tennis,600
rugby,600
day2.txt

swimming,1000
fencing,200
athletics,600
gymnastics,1200
tennis,500
diving,600
swimming,1200
tennis,500
rugby,900
handball,500
hockey,2300
trampoline,200
swimming,400
gymnastics,1200
fencing,100
diving,400
tennis,600
rugby,600
day3.txt

swimming,1000
fencing,200
athletics,600
gymnastics,1200
tennis,500
diving,600
swimming,1200
tennis,500
rugby,900
handball,500
hockey,2300
trampoline,200
swimming,400
gymnastics,1200
fencing,100
diving,400
tennis,600
rugby,600
预期产出

电流输出


这是一种使用
collections.defaultdict
的方法

Ex:

from collections import defaultdict

days = int(input("How many days of records do you have? "))

result = defaultdict(int)
for i in range(days):
    with open("day{}.txt".format(i)) as infile:
        for line in infile:
            key, value = line.strip().split(",")
            result[key] += int(value)

for key,value in result.items():
    print (key + "," + str(value))

print("In total: {} attendees.".format(sum(result.values())))

抱歉,如果它不清楚,格式不正确,我是Stack的新手,如果你想知道为什么我有一个列表,我试图用一个列表,然后意识到我需要一个字典,我太懒了,没有删除访问代码:)打开(“day{}.txt.format(I))作为填充:此代码检查'day0.txt',但文件名从'day1.txt'开始使用
表示范围内的i(1,天+1):
print(key+,“+value)TypeError:必须是str,而不是intits实际上
print(key+”,“+str(value))
很抱歉不断打扰您,但现在它给出了双倍的答案