gpt4 book ai didi

python - 如何根据索引值匹配值?

转载 作者:太空宇宙 更新时间:2023-11-04 01:32:44 25 4
gpt4 key购买 nike

有时我会遇到信息存在于两个数据集中的问题。虽然很麻烦,但我使用 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']]

一如既往,我们将不胜感激!

最佳答案

我觉得你可以考虑使用collections.namedtuple为此目的:

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

关于python - 如何根据索引值匹配值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12667202/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com