首页 > 解决方案 > Python比较两个对象列表并追加到一个列表

问题描述

我正在尝试比较两个对象列表,以查看两个列表中的人名是否匹配。

list1 = ('Name', 'Kilometers Driven')
list1 example = ('John Doe', 500),('Jane Doe', 200)

list2 = ('Id','Name','Kilometers Walked','Total Events')
list2 example = (2,'Joe Doe',20,2),(3,'Frank Kelly',32,4)

如果此人同时出现在两个列表中,我想将公里数驱动并将其添加到该人的第二个列表中。

谢谢您的帮助

标签: pythonpython-3.x

解决方案


就个人而言,我认为 dicts 更适合您的解决方案,因为您可以通过它们的键(例如 dict['km_driven'])访问它们,这比列表中的整数索引更容易混淆。

此代码使用列表工作:

# list1 = ('Name', 'Kilometers Driven')
list1 = [('Joe Doe', 500),('Jane Doe', 200)]

# list2 = ('Id','Name','Kilometers Walked','Total Events', optional='Kilometers Driven')
list2 = [(2,'Joe Doe',20,2),(3,'Frank Kelly',32,4)]

# Iterate through items of list1
for item1 in list1:
    # Iterate through items of list2
    for i in range(len(list2)):
        # Match 'Name' field in list1 to 'Name' field in list2
        if item1[0] == list2[i][1]:
            # Add 'Kilometers Driven' to that list2 item
            list2[i] = list2[i] + (item1[1], )

print(list2[0])     

输出:

(2, 'Joe Doe', 20, 2, 500)

推荐阅读