如何在没有循环的情况下检查dict列表中是否存在任何反向元素

时间:2010-06-25 07:24:41

标签: python list dictionary reverse

我的清单就像

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

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

2 个答案:

答案 0 :(得分:3)

我建议改变元组中的字典并将元组放在一个集合中。如果反向元组在集合中,则查看集合。那将具有O(n)而不是O(n ^ 2)的复杂性。

答案 1 :(得分:1)

这段代码似乎没有循环:

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)