Python 如何根据索引值匹配值?

Python 如何根据索引值匹配值?,python,export-to-csv,Python,Export To Csv,有时我会遇到信息位于两个数据集中的问题。虽然很麻烦,但我使用Access将数据配对,然后将其导出到CSV。其他时候,我使用for循环遍历列表和匹配数据,但它的伸缩性不好 我想知道Python中是否有更有效的方法来“链接”数据。下面是我所说的一个例子 在这种情况下,一个数据集包含品牌和型号,另一个包含原产国。我希望能够将集合A和集合B中的数据合并成一个数据集,用于导出、分析等 A=[['Chevy','Suburban'],['Toyota','Camry'],['Honda','Civic']]

有时我会遇到信息位于两个数据集中的问题。虽然很麻烦,但我使用Access将数据配对,然后将其导出到CSV。其他时候,我使用for循环遍历列表和匹配数据,但它的伸缩性不好

我想知道Python中是否有更有效的方法来“链接”数据。下面是我所说的一个例子

在这种情况下,一个数据集包含品牌和型号,另一个包含原产国。我希望能够将集合A和集合B中的数据合并成一个数据集,用于导出、分析等

A=[['Chevy','Suburban'],['Toyota','Camry'],['Honda','Civic']]
B=[['Chevy','America'],['Toyota','Japan'],['Honda','Japan']]

AB =[['Chevy','Suburban','America'],['Toyota','Camry','Japan'],['Honda','Civic','Japan']]

一如既往,我们感谢您的帮助

> P>我认为你可以考虑使用:

>>> from collections import namedtuple
>>> MakeOrigin = namedtuple('MakeOrigin', ['make', 'origin'])
>>> MakeModel = namedtuple('MakeModel', ['make', 'model'])
>>> A = [MakeModel('Chevy', 'Suburban'), MakeModel('Toyota', 'Camry'), MakeModel('Honda', 'Civic')]
>>> B = [MakeOrigin('Chevy', 'America'), MakeOrigin('Toyota', 'Japan'), MakeOrigin('Honda', 'Japan')]
>>> AB = [[a.make, a.model, b.origin] for a in A for b in B if a.make == b.make]
>>> AB
[['Chevy', 'Suburban', 'America'], ['Toyota', 'Camry', 'Japan'], ['Honda', 'Civic', 'Japan']]
它更具可读性,允许进行更有趣的操作


不使用
namedtuple

>>> A=[['Chevy','Suburban'],['Toyota','Camry'],['Honda','Civic']]
>>> B=[['Chevy','America'],['Toyota','Japan'],['Honda','Japan']]
>>> 
>>> AB = [[a[0], a[1], b[1]] for a in A for b in B if a[0] == b[0]]
>>> AB
[['Chevy', 'Suburban', 'America'], ['Toyota', 'Camry', 'Japan'], ['Honda', 'Civic', 'Japan']]

也许是这样的<代码>映射(lambda x:x[0]+[x[1][1]],zip(A,B))在本例中,它们是有序的,但在大多数情况下它们不是有序的。代码看起来很方便!我将把它保存在我的代码片段库中