如果项目[2]相同,如何将列表中的项目[1]添加到另一个列表中的项目[1]?

时间:2019-05-09 23:12:32

标签: python nested-lists

很抱歉,如果已经有人问过这个问题。在这种情况下,我希望获得一个链接。

我正在尝试将一个列表中的项目添加到另一列表中的项目,如果它们在列表中具有相似的项目。

注意:这是编程课程的入门。我没有接受过任何非常高级的教育(例如,我从未使用过熊猫)。

我已经Google搜索了几天。不幸的是,我的课本课不足以完成这项任务。如果我只需要添加列表中的所有项,或者仅基于列表中的索引从每个列表中添加一项,那我会很高兴。 事实并非如此。

提供了一个已经定义了主模块的shell程序。其中的一部分导入了CSV文件。文件的每一行都作为列表中的列表导入。每个列表中有3个项目。

Examples:
    [  
    [Monday,4.95,Beverages]  
    [Monday,12.95,Food]  
    [Tuesday,4.95,Beverages]  
    [Wednesday,4.95,Beverages]  
    [Thursday,31,Food]  
    [Friday,45,Food]  
    [Saturday,23,Food]  
    [Saturday,12.5,Entertainment]  
    [Friday,25,Entertainment]  
    ]  

这就是所提供的。

def summarize_by_weekday(expense_list):  

    """  
    Requirement 3 to display the total amount of money spent on each  
    weekday, aggregated per day.  
    That is, display “Monday: $35”, “Tuesday: $54”, etc., where $35 is the  
    sum of dollar amounts for all Mondays present in the data file,   
    $54 is the sum of dollar amounts for all Tuesdays present in the  
    data file, and so on.  
    :param expense_list:  
    :return: None  
    """  

我已经尝试了很多,并在进行时将其丢弃。所以,我不能说 我尝试过的一切。
但是,自从重新开始以来,我已经学到了很多:

def summarize_by_weekday(expense_list):  
    print ("Summary by weekday:")  
    totAmt == 0  
    for item in expense_data:  
        day = item[0]  
        amount = float(item[1])  
        category = item[2]  
        for line in expense_list:  
            if day == "Monday":  
                totAmt += amount   
                print ("Monday: $",totAmt)  

我的错误
    UnboundLocalError:赋值之前引用了本地变量'totAmt'

我也尝试过:

for item in expense_data:  
    day = item[0]  
    amount = float(item[1])  
    category = item[2]  
    totAmt == 0  
    for line in expense_list:  
        if day == "Sunday":  
            totAmt = map(lambda x: x + x, amount)  
            print ("Sunday: $",totAmt)  
        elif day == "Monday":  
            totAmt = sum(float(amount))  
            print ("Monday: $",totAmt)  

我的错误
    UnboundLocalError:赋值之前引用了本地变量'totAmt'

结果应打印如下。

Summary by weekday:  
Sunday: $DDD.CC  
Monday: $DDD.CC  
Tuesday: $DDD.CC  
Wednesday: $DDD.CC  
Thursday: $DDD.CC  
Friday: $DDD.CC  
Saturday: $DDD.CC 

(其中$ DDD.CC =美元和美分的总额。)
如果可以将$ DDD.CC设置为合理

我真的不需要为我写下全部内容。我不希望有人替我做作业。
诸如“您的代码是错误的。请尝试使用它”之类的东西,其中“ this”是尽可能少的代码,可以帮助我。

谢谢。

3 个答案:

答案 0 :(得分:0)

如果要为变量赋值,请使用'=','=='用于比较

def summarize_by_weekday(expense_list):  
    print ("Summary by weekday:")  
    totAmt = 0  
    for item in expense_list:  
        day = item[0]  
        amount = float(item[1])  
        category = item[2]  
        if day == "Monday":  
            totAmt += amount   
            print ("Monday: $",totAmt)
        elif day == 'Tuesday':
            totAmt += amount   
            print ("Tuesday: $",totAmt)
        elif day == 'Wednesday':
            totAmt += amount   
            print ("Wednesday: $",totAmt)
        elif day == 'Thursday':
            totAmt += amount   
            print ("Thursday: $",totAmt)
        elif day == 'Friday':
            totAmt += amount   
            print ("Friday: $",totAmt)
        elif day == 'Saturday':
            totAmt += amount   
            print ("Saturday: $",totAmt)
        else:
            totAmt += amount   
            print ("Sunday: $",totAmt) 

答案 1 :(得分:0)

summary = {}

for day, money, category in expense_list:
    if day in summary:
        summary[day] = summary[day] + float(money)
    else:
        summary[day] = float(money)
for day in summary:
    summary[day] = "$" + str(summary[day])
    print(day + ": " + summary[day])

这将为您提供所需的答案。

答案 2 :(得分:0)

所以,我找到了答案。 既然你们都很乐于提供帮助,我想分享一下: 请注意,这还不是答案。我添加了一些基本的print()行以对其进行一些基本的改进。

print ("\n---------------------")  
print (" Summary by weekday")  
print ("---------------------")  
for weekday in ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']:  
    this_day_total = 0.0  
    for expense_item in expense_list:  
        if expense_item[0] == weekday:  
            this_day_total += float(expense_item[1])  
    print("%-9s: $%7.2f" % (weekday, this_day_total))  
print ("---------------------")  

感谢大家的帮助!