在Python中,如何选择lis中包含重复项的行

2024-09-29 21:55:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个列表,其中包含以下列表:

rowdata = [['100004100', 'ABC1234AS', '45.96'],
           ['100004101', 'ABC1234AS', '104.95'],
           ['100004103', '453SDFAS', '24.52']]

我想知道如果第二个值匹配,如何将第一个值和第三个值作为一个组返回。你知道吗

第一个值是订单号,第二个值是批号,第三个值是美元金额。我的信用卡处理程序将随机订单集中在一起。我试图找到批次号匹配的行,并返回这些行的订单号和金额。你知道吗

我在想

for item in rowdata:
    if item[1] is a duplicate:
        print item[0], item[1]

Tags: in订单处理程序列表forifis信用卡
3条回答

Python有一些非常有用的内置工具,但有时如果您不知道要查找什么,就很难找到它们。这里^{}^{}是有用的。你知道吗

from itertools import groupby
from operator import itemgetter

rowdata = [['100004100', 'ABC1234AS', '45.96'],
           ['100004101', 'ABC1234AS', '104.95'],
           ['100004103', '453SDFAS', '24.52']]

for key, group in groupby(rowdata, itemgetter(1)):
    print key, list(group)

给你:

ABC1234AS [['100004100', 'ABC1234AS', '45.96'], ['100004101','ABC1234AS', '104.95']]

453SDFAS [['100004103', '453SDFAS', '24.52']]

rowdata = [['100004100', 'ABC1234AS', '45.96'],
           ['100004101', 'ABC1234AS', '104.95'],
           ['100004103', '453SDFAS', '24.52']]

def find_duplicates(duplicate):
    return [(item[0], item[2]) for item in rowdata if item[1] == duplicate]

print find_duplicates('ABC1234AS')

印刷品:

[('100004100', '45.96'), ('100004101', '104.95')]

如果您试图按批号对订单进行分组,可以使用^{}。你知道吗

rowdata = [['100004100', 'ABC1234AS', '45.96'],
           ['100004101', 'ABC1234AS', '104.95'],
           ['100004103', '453SDFAS', '24.52']]

batches = defaultdict(list)

for order in rowdata:
    batches[order[1]].append([order[0], order[2]])

for batch, orders in batches.iteritems():
    print "%s: %s" % (batch, orders)

输出:

ABC1234AS: [['100004100', '45.96'], ['100004101', '104.95']]
453SDFAS: [['100004103', '24.52']]

相关问题 更多 >

    热门问题