1

私のリストは

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

リスト内の辞書に逆ペアがあるかどうかを確認するより良い方法はありますか?

4

2 に答える 2

3

辞書をタプルに変換し、タプルをセットに入れることをお勧めします。逆タプルがセット内にある場合は、セット内を調べます。これは、O(n^2) ではなく O(n) の複雑さを持ちます。

于 2010-06-25T08:31:24.183 に答える
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)
于 2010-06-25T08:47:01.127 に答える