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

在Python中,如何选择列表中包含重复项的行,python,list,Python,List,我有一个列表,其中包含以下列表: rowdata = [['100004100', 'ABC1234AS', '45.96'], ['100004101', 'ABC1234AS', '104.95'], ['100004103', '453SDFAS', '24.52']] 我试图弄清楚如果第二个值匹配,如何将第一个值和第三个值作为一个组返回 第一个值是订单号,第二个值是批次号,第三个值是美元金额。我的信用卡处理器将随机订单集中在一起。我试图找到批

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

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]
印刷品:

[('100004100', '45.96'), ('100004101', '104.95')]
印刷品:

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

如果您试图按批号对订单进行分组,则可以使用

产出:

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

如果您试图按批号对订单进行分组,则可以使用

产出:

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

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']

453DFAS['10000103',453DFAS',24.52']]


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']]

bucket = defaultdict(list)
for col1, col2, col3 in rowdata:
    bucket[col2].append((col1,col3))

duplicates = {key:value for key, value in bucket.items() if len(value) > 1}

print (duplicates)
打印以下内容:

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


工作示例:

类似于以下内容的内容

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

bucket = defaultdict(list)
for col1, col2, col3 in rowdata:
    bucket[col2].append((col1,col3))

duplicates = {key:value for key, value in bucket.items() if len(value) > 1}

print (duplicates)
打印以下内容:

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

工作示例: