比较/测试两个元组列表

时间:2015-12-04 03:25:11

标签: python tuples

我有两个元组列表:

L1 = [(192.168.1.1, name1), (192.168.1.2, name2), (192.168.1.3, name3), (192.168.1.4, name4)]

L2 = [(192.168.1.1, data1, data2), (192.168.1.2, data3, data4)]

L1具有可能发生的所有可能的ip /名称,而L2当前有活动的ip及其数据。

我的目标是获得一个列表,我们称之为L3,它需要从L1获取ip和名称,L2中的数据需要L2中的所有元素。

L3 = [(192.168.1.1, name1, data1, data2), (192.168.1.2, name2, data3, data4)]

解决方案我在放弃列表理解之后出现了真的很脏,而且可能很慢。我还没有在更大的数据集上测试它,但速度很重要,所以我需要你的帮助。我希望这可以通过列表理解速度和学习新东西来完成。提前谢谢。

我的肮脏解决方案:

L3=[]
for item in L1:
for i in range(len(L2)):
    if L2[i][0] == item[0]:
        L3.append((item[0], item[1], L2[i][1], L2[i][2]))

1 个答案:

答案 0 :(得分:4)

使用列表理解。

>>> L1 = [('192.168.1.1', 'foo'), ('192.168.1.2', 'bar'), ('192.168.1.3', 'buzz')]
>>> L2 = [('192.168.1.1', 'data1', 'data2'), ('192.168.1.2', 'data3', 'data4')]
>>> [j + i[1:] for i in L2 for j in L1 if j[0] == i[0]]
[('192.168.1.1', 'foo', 'data1', 'data2'), ('192.168.1.2', 'bar', 'data3', 'data4')]