Python finding new element in list
本问题已经有最佳答案,请猛点这里访问。
我想在
1 2 3 4 5 6 7 8 9 10 11 | liste1 = [['euro2016', '99'], ['portugal', '87'], ['ronaldo', '34']] liste2 = [['euro2016', '90'], ['portugal', '75'], ['ronaldo', '44'], ['nani', '15']] l1 = len(liste1) l2 = len(liste2) for x in range(0,l2): for y in range(0,l1): if liste2[x][0] not in liste1[y][0]: print liste2[x][0] |
但我的代码给出了这样的结果:
euro2016
euro2016
portugal
portugal
ronaldo
ronaldo
nani
nani
nani
我想我必须搜索列表1[全部][0],但我不知道如何搜索。
I want to find the new word in liste2
您可以使用列表理解并应用仅在
1 2 3 4 | result = [i[0] for i in liste2 if i[0] not in (j[0] for j in liste1)] # ^ filtering is done here ^ print(result) # ['nani'] |
这里检查
1 | [i for i in liste2 if i[0] not in [j[0] for j in liste1]] |
您可以在每个列表项中创建一组第一个元素,然后获取差异。它将返回列表2中不在列表1中的项:
1 2 3 | l3 = set(map(lambda x:x[0],liste1)) l4 = set(map(lambda x: x[0],liste2)) print list(l4.difference(l3))[0] |
输出:
1 2 | nani >>> |
1 2 3 4 5 6 | In [8]: dict1 = dict(liste1) In [9]: dict2 = dict(liste2) In [10]: print(set(dict2.keys()) - set(dict1.keys())) set(['nani']) |