首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python 3变量列表差异

Python 3变量列表差异
EN

Stack Overflow用户
提问于 2012-10-23 07:29:16
回答 3查看 70关注 0票数 0

我有两个列表,我正在尝试比较$ amount在某个特定数量上的差异。

这些列表是

代码语言:javascript
复制
file1 = ['file1,product1,-1000.56', 'file1,product2,500.43']

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

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

代码语言:javascript
复制
file1 product2 500.43
file2 product2 511.99

Difference = $11.56

产品%1不会显示,因为它低于$5

有什么好方法可以做到这一点吗?

我试过了..。

代码语言:javascript
复制
for i in file1:
    i.split(",")

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

如果有人能给我一种方法来比较两个$金额超过5美元的差额,我就可以解决剩下的问题。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-23 07:35:55

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

代码语言:javascript
复制
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
票数 3
EN

Stack Overflow用户

发布于 2012-10-23 07:38:43

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

代码语言:javascript
复制
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
票数 1
EN

Stack Overflow用户

发布于 2012-10-23 07:33:08

在逗号上拆分后,最后一个元素将是表示美元金额的字符串。第一步是使用float将其转换为数字。在获得两个浮点数的美元金额后,您只需将它们相减并与5.0进行比较,例如:

代码语言:javascript
复制
diff = abs(float('511.99') - float('500.43'))
if diff >= 5.0:
    # print it

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13021460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档