繁体   English   中英

如何将 txt.file 中的字符串与我的字典值(值是整数)进行比较并计算总和

[英]How do I compare the strings in a txt.file to my dictionary values (the values are integers) and calculate the sum

我的问题的标题可能有点混乱 - 也许那是因为我自己有点困惑。

我的任务是为餐厅创建一个小型计费系统(它不是真正的餐厅)。 我有 3 个文本文件。 第一个是 menu.txt。 在文件中,每一行都包含一道菜的名称和价格,用逗号分隔。 然后我有 2 个订单文件 order1.txt 和 order2.txt 每行都包含已订购的菜单中的一项。

我自己对这项任务的建议是将菜单文件放入列表中,然后使其成为字典。

这是我的解决方案:

def compute_total(mfile, ofile):
    dictionary = {}
    newlist = []
 
    with open('menu.txt') as f:
        for line in f:
            line = line.replace(',', '')
            newlist.append(line.split())
               
        for strings in newlist:
           dictionary[strings[0]] = strings[1]

我觉得我做对了,但我真的不知道如何从这里制作代码。 因为我知道我想以某种方式查看例如: order1 是否在字典(菜单)中,然后计算菜肴的价值(价格)。

我在想下面可能是这样的,但它不起作用,我被卡住了。

    for k, v in dictionary.items():
        if int(k) in dictionary.items():
            Dvalues.append(v)

我希望你能给我一些建议,让我继续前进。 我是一个新手,所以我真的希望你能花一些时间来帮助我解决这样的小问题(对你来说)。

最好的问候,见

Python 的csv package 非常适合处理逗号分隔的文件。 csv 模块不必手动解析每一行,而是能够将每一行转换为以前用逗号分隔的值列表。 然后,您可以使用并行分配来获取每行的商品和价格,并将它们存储在字典中:

with open('menu.txt') as f:
    for line in f:
        item, price = csv.reader(line, quotechar="'", delimiter=",")
        dictionary[item] = price

现在您已经在字典中存储了所有菜单项,您所要做的就是从其他文本文件中读取每个项目行,将该项目传递给您的字典,取回价格,并将其添加到总和中:

order1_total = 0
with open(mfile) as f:
    for line in f:
        item = line      
        order1_total += dictionary[item]
           

不要忘记将行import csv添加到程序的顶部。 希望能帮助到你! 祝你好运!

暂无
暂无

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

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