繁体   English   中英

如何在python的字典中将某些值添加在一起

[英]How to add certain values together in a dictionary in python

def statistics():
    monthly_d = {}
    with open("BLS_private.csv") as f:
        reader = csv.reader(f)
        for row in reader:
            monthly_d[row[0]] = {"January":row[1],"Febuary":row[2],"March":row[3],"April":row[4],"May":row[5],"June":row[6],"July":row[7],"August":row[8],"September":row[9],"October":row[10],"November":row[11],"December":row[12]}

    print(monthly_d)
    return monthly_d

statistics()

这导致以下字典:

'2011': {'January': '108207', 'Febuary': '108464', 'March': '108725', 'April': '108989', 'May': '109097', 'June': '109199', 'July': '109374', 'August': '109426', 'September': '109642', 'October': '109781', 'November': '109959', 'December': '110193'}

我想做的是将所有统计信息合并到字典中,这样我就可以得到这样的输出:

'2011' : {'234099894'}

即只是字典中所有月份的总和。

只需在dict.values上使用 sum 。 一个字典理解就可以了:

year_sums = {y: str(sum(map(int, m.values())))
                for y, m in statistics().items()}

仅供参考的statistics也可以简化为字典理解:

months = ['January', 'Febuary', 'March', 'April', 'May', 'June', 'July',
          'August', 'September', 'October', 'November', 'December']

def statistics():
    with open("BLS_private.csv") as f:
        reader = csv.reader(f)
        return {row[0]: dict(zip(months, row[1:12])) for row in reader}
def statistics():
    monthly_d = {}
    with open("BLS_private.csv") as f:
        reader = csv.reader(f)
        for row in reader:
            total = sum(int(v) for v in row[1:])
            monthly_d[row[0]] = '{}'.format(total)

    print(monthly_d)
    return monthly_d

statistics()

这只是简单地总结了每一行中的所有元素。 然后它看起来像这样:

'2011' : '234099894'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM