嵌套数组和匹配值

时间:2016-05-03 02:27:53

标签: python arrays

您好我有两个需要匹配的数据集,它们的对应值必须相同。

list1 = [['Bob',[1,2,3,4]],['henry',[65,23,41,23]],['jerry',[5,8,10,12]]]

list2 = [['Bob',[1,2,4,3]],['jill',[36,21,34,53]],['jerry',[9,8,4,12]]]

但是有一点需要注意,如果在比较list1和list2时不存在与名称关联的值,则需要检查它,然后将其添加到列表中,反之亦然。

例如,'jerry'同时存在于list1和list2中,但是[5,8,10,12]不等于[9,8,4,12],附加到list1和list2的所需更新将是:[9,4,5,8,10,12]所以这两个列表都有与现在匹配的'jerry'相关联的值。在与我合作的情况下,与名称关联的值的顺序无关紧要。

这是一个现实世界的问题,我已经翻译成一个相当简单的数据集。我感谢任何提示或建议!

预期输出:

list1 = [['Bob',[1,2,3,4]],['henry',[65,23,41,23]],['jerry',[4,5,8,9,10,12]]]

list2 = [['Bob',[1,2,3,4]],['jill',[36,21,34,53]],['jerry',[4,5,8,9,10,12]]]]

1 个答案:

答案 0 :(得分:1)

您可以使用set()

list3 = {k:list(set([list1[k]+list2[k])) for k in list1}

抱歉,我做了这个奇怪的假设你正在使用字典...

list3 = [[k,list(set([list1[k]+list2[k]))] for k in list1]

那更好,哦等不,它不是......

list3 = [[list1[n][0],list(set([list1[n][1]+list2[n][1]]))] for n,k in enumerate(list1)]

亲爱的主啊,你有没有在这里使用词典的原因?