我有两个列表,我正在尝试比较$ 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.81https://stackoverflow.com/questions/13021460
复制相似问题