0

我有两个列表,我正在尝试比较一定金额的美元金额差异。

清单是

file1 = ['file1,product1,-1000.56', 'file1,product2,500.43']

file2 = ['file2,product1,-1001.37', 'file2,product2,511.99']

如果超过 5 美元,我想以以下格式打印差异

file1 product2 500.43
file2 product2 511.99

Difference = $11.56

产品 1 不会显示,因为它低于 5 美元

有没有好的方法来做到这一点?

我努力了...

for i in file1:
    i.split(",")

这有助于拆分列表,但如何比较两个 $ 金额,并仅显示 $5 或更多。

如果有人能给我一种方法来比较两个超过 5 美元的差额,我可以找出其余的。

4

3 回答 3

3

用于zip()遍历两个列表:

In [114]: file1 = ['file1,product1,-1000.56', 'file1,product2,500.43']

In [115]: file2 = ['file2,product1,-1001.37', 'file2,product2,511.99']

In [116]: for f1,f2 in zip(file1,file2):
    spl1=f1.split(',')     #returns something like ['file1', 'product2', '500.43']
    spl2=f2.split(',')     #returns something like ['file2', 'product2', '511.99']

    diff=abs(float(spl1[-1])-float(spl2[-1]))  ##use abs() to find the difference

    if diff>5:  
        print " ".join(spl1)                    #use print() as you're on py 3.x 
        print " ".join(spl2)                    #join the lists by " " 
        print "${0}".format(diff)
   .....:         
   .....:         
file1 product2 500.43
file2 product2 511.99
$11.56
于 2012-10-22T23:35:55.487 回答
1

如果您只关心两个文件中出现的相同产品,那么您可以创建一个 product->value 查找的字典,然后获取文件之间的差异(未经测试,可以做得更优雅):

file1 = ['file1,product1,-1000.56', 'file1,product2,500.43']
file2 = ['file2,product1,-1001.37', 'file2,product2,511.99']

d1 = {k: float(v) for k, v in (el.split(',')[1:] for el in file1)}
d2 = {k: float(v) for k, v in (el.split(',')[1:] for el in file2)}

for key in d1.keys() & d2.keys():
    print (key, abs(d1[key] - d2[key]))

# product2 11.56
# product1 0.81
于 2012-10-22T23:38:42.560 回答
0

用逗号分割后,最后一个元素将是一个表示美元金额的字符串。第一步是使用 将其转换为数字float。将两美元金额作为浮点数后,您可以将它们减去并与 进行比较5.0,例如:

diff = abs(float('511.99') - float('500.43'))
if diff >= 5.0:
    # print it

请注意,我还使用了内置函数abs来确保我们得到了积极的差异,这样您就不需要先找出哪个值更大。

于 2012-10-22T23:33:08.477 回答