我的清单就像
l1 = [ {k1:v1} , {k2:v2}, {v1:k1} ]
有没有更好的方法来检查列表中的任何字典是否有反向对?
我的清单就像
l1 = [ {k1:v1} , {k2:v2}, {v1:k1} ]
有没有更好的方法来检查列表中的任何字典是否有反向对?
我建议将字典转换为元组并将元组放在一个集合中。如果反向元组在集合中,则在集合中查找。这将具有 O(n) 而不是 O(n^2) 的复杂度。
这段代码似乎可以在没有循环的情况下工作:
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)