首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果键被复制,如何在字典中一起添加两个值?

如果键被复制,如何在字典中一起添加两个值?
EN

Stack Overflow用户
提问于 2019-08-30 11:52:54
回答 1查看 40关注 0票数 2

因此,我有一个项目,它要求用户提供.txt文件的数量,这些文件的标题是“日”,然后是按升序排列的数字。代码中的格式是体育/活动(键),然后是逗号和从事这项运动的人数(值)。我想要的是它从文本文件中给出所有运动的输出,如果活动(键)被复制,那么它就会将做它的人加起来(值)。最重要的是,我想要的是所有参与的人(所有的价值加在一起)。

代码语言:javascript
复制
days = int(input("How many days of records do you have? "))
i = 0
list1 = []
d = {}
for i in range(days):
  i += 1
  file = 'day' + str(i)
  f = open(file + '.txt')
  a = []
  for line in f:
    line = line.replace(',' , ' ')
    list1.append(line)
    words = line.split()
    d[words[0]] = words[1]
    a.append[words[1]] 
  stripped_line = [s.rstrip() for s in d]
for key,value in d.items() :
   print (key + "," + value)
print("In total:", a, "attendees.") 

输入

代码语言:javascript
复制
User_input = 3

day1.txt

代码语言:javascript
复制
swimming,1000
fencing,200
athletics,600
gymnastics,1200
tennis,500

day2.txt

代码语言:javascript
复制
diving,600
swimming,1200
tennis,500
rugby,900
handball,500
hockey,2300
trampoline,200

day3.txt

代码语言:javascript
复制
swimming,400
gymnastics,1200
fencing,100
diving,400
tennis,600
rugby,600

预期输出

代码语言:javascript
复制
swimming: 2600
fencing: 300
athletics: 600
gymnastics: 2400
tennis: 1600
diving: 1000
rugby: 1500
handball: 500
hockey: 2300
trampoline: 200
In total: 13000 attendees.

电流输出

代码语言:javascript
复制
swimming,400
fencing,100
athletics,600
gymnastics,1200
tennis,600
diving,400
rugby,600
handball,500
hockey,2300
trampoline,200
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-08-30 12:05:31

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

Ex:

代码语言:javascript
复制
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())))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57726241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档