代码之家  ›  专栏  ›  技术社区  ›  shahjapan

如何检查dict列表中是否存在反向元素而不在其上循环

  •  1
  • shahjapan  · 技术社区  · 15 年前

    我的清单是

    l1 = [ {k1:v1} , {k2:v2}, {v1:k1} ]
    

    有没有更好的方法来检查列表中的字典是否有反向对?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Michał Niklas    15 年前

    此代码似乎没有循环:

    k1 = 'k1'
    k2 = 'k2'
    v1 = 'v1'
    v2 = 'v2'
    l1 = [ {k1:v1} , {k2:v2}, {v1:k1} ]
    
    kv = [e.items()[0] for e in l1]
    print(kv)
    
    vk = [(v, k) for (k, v) in kv]
    print(vk)
    
    result = [(k, v) for (k, v) in kv if (k, v) in vk]
    print(result)
    
        2
  •  3
  •   Xavier Combelle    15 年前

    我建议将字典转换为元组,并将元组放在一个集合中。如果反向元组在集合中,请查看集合。它的复杂性是O(n)而不是O(n^2)。