0

私は2つのリストを持っています

A=[['1','1'],['2','1'],['3','2']]

B=[['1','1'],['2','2']]

これらの最初の要素のみを比較するAB操作を実行したい。

だからABは与えるべきです

Output=[['3', '2']]

これまでのところ、行の比較しかできませんでした

[x for x in A if not x in B]

出力は次のようになります[['2', '1'], ['3', '2']]

4

3 に答える 3

1

これ?

>>> [i for i in A if not any(i[0] == k for k, _ in B)]
[['3', '2']]

any()は、各リストの最初の要素が のすべてのリストの他の値と同じかどうかを確認するために使用されBます。そうである場合はTrueを返しますが、これの反対が必要なので、not any(...)

于 2013-07-05T08:08:17.983 に答える
0

collections.OrderedDict ここで違いを使用して設定することもできます:

>>> from collections import OrderedDict
>>> dic1 = OrderedDict((k[0],k) for k in A)
>>> [dic1[x] for x in set(dic1) - set(y[0] for y in B)]
[['3', '2']]

全体的な複雑さはO(max(len(A), len(B)))

順序が重要でない場合は、通常の dict で十分です。

于 2013-07-05T08:34:14.140 に答える