如何添加重复元素的值

时间:2015-11-11 00:52:18

标签: python arrays

这是我在python中的代码:

from array import *
date =      array('I',  [11,  11,    12,    11,     2,      7,      2])
saleAmount = array('I', [500, 25000, 51000, 100000, 125999, 126000, 202000])

for x in range(0,7):
    if date[x] == 1:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 2:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 3:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 4:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 5:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 6:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 7:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 8:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 9:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 10:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 11:
    totalsale = saleAmount[x]
    print(date[x], totalsale)
if date[x] == 12:
    totalsale = saleAmount[x]
    print(date[x], totalsale)

我在数据中找到了重复项。现在我想添加重复项(例如,如果11次出现多次,则添加所有11个的相应值)

输出将是这样的:

11, 12550

我该怎么做?

1 个答案:

答案 0 :(得分:1)

你的问题不是很明确,但你表明你的努力,这应该给你几分。

首先,关于您的代码的一些评论:

  • 您似乎有12种不同的条件会导致相同的结果。我不知道你正在尝试做什么,但显然你可以减少你的代码。例如,您可以用单个

    替换您的12个条件

    如果日期[x]在范围(1,13)

  • 看起来您的代码没有正确缩进,您需要缩进for循环中的所有行,并为受if条件限制的代码行添加额外的缩进。这就是python的编写方式,缩进非常重要。

要回答您的问题,我认为使所有具有相同日期的销售总和的最简单方法是使用字典结构。它可以保持按日期索引的销售值,并且不会有空值:

#we declare a dictionary
SalesByDate={}
#we fill the dictionary using a for loop
for x in range(0,7):
#if the entry for the date is not in the dictionary, you create it
    if date[x] not in SalesByDate:
        SalesByDate[date[x]]=0
#you then add the value of the sale to the corresponding date
    SalesByDate[date[x]]+=saleAmount[x]

然后你有你的词典。你可以直接打印出来:

print(SalesByDate)

但它看起来不太好看。要打印它的每一行:

for entry in sorted(SalesByDate.keys()):
    print(entry,SalesByDate[entry])

要访问日期11的总销售额,您需要使用语法

SalesByDate[11]

将使用您的数据产生结果

125500