找出列表中没有的条目

时间:2015-10-01 22:06:30

标签: python algorithm

我有一个节点名称列表列表,我有一个包含总节点的图表。

我需要找出节点名称列表中不存在的节点名称。

前:

  • 节点名称列表列表:public bool IsLoading { get; set; } = false;
  • graph:所有节点名称(需要迭代并查找节点名称)      例如。 (节点名称):[[x,y,h,j,k],[a,b,c],[t,q,r,v,x,y,k],[a,h,y,q,c]]

  • 对于循环中的第一个列表[a,b,c,x,y,h,j,k,t,q,r,v], 需要返回图表中存在的剩余节点名称列表:[x,y,h,j,k]

它应该在循环中为节点名列表中的每个列表运行。

我正在使用python和[a,b,c,t,q,r,v]。请帮帮我

2 个答案:

答案 0 :(得分:1)

我建议使用set或dicts来提高效率。

lists_of_nodes = [['x','y','h','j','k'],['a','b','c'],['t','q','r','v','x','y','k'],['a','h','y','q','c']]
sets_of_nodes = map(set, lists_of_nodes)
all_nodes = reduce(lambda l, r: l.union(r), sets_of_nodes)
complements = [list(all_nodes.difference(node_set)) for node_set in sets_of_nodes]

for complement in complements:
    print complement

'''
['a', 'c', 'b', 'q', 'r', 't', 'v']
['h', 'k', 'j', 'q', 'r', 't', 'v', 'y', 'x']
['a', 'h', 'c', 'b', 'j']
['b', 'k', 'j', 'r', 't', 'v', 'x']
'''

答案 1 :(得分:0)

l = [['x','y','h','j','k'],['a','b','c'],['t','q','r','v','x','y','k'],['a','h','y','q','c']]


def return_remaining(list_of_nodes):
    total = ['a','b','c','x','y','h','j','k','t','q','r','v']
    for node in list_of_nodes:
        if node in total:
            total.remove(node)
    return total

for i in range(len(l)):
    print return_remaining(l[i])

输出

['a', 'b', 'c', 't', 'q', 'r', 'v']
['x', 'y', 'h', 'j', 'k', 't', 'q', 'r', 'v']
['a', 'b', 'c', 'h', 'j']
['b', 'x', 'j', 'k', 't', 'r', 'v']