我有两个列表,我正在尝试比较$ amount在某个特定数量上的差异。
这些列表是
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美元的差额,我就可以解决剩下的问题。
发布于 2012-10-23 07:35:55
使用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-23 07:38:43
如果您只关心在两个文件中出现的相同产品,那么您可以创建一个product->value lookup字典,然后计算两个文件之间的差异(未经测试,可以做得更好):
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-23 07:33:08
在逗号上拆分后,最后一个元素将是表示美元金额的字符串。第一步是使用float将其转换为数字。在获得两个浮点数的美元金额后,您只需将它们相减并与5.0进行比较,例如:
diff = abs(float('511.99') - float('500.43'))
if diff >= 5.0:
# print it请注意,我还使用了内置函数abs来确保我们得到一个正的差异,这样您就不需要先计算哪个值更大。
https://stackoverflow.com/questions/13021460
复制相似问题