3

各タプルの2番目の項目が重複している場合、タプルのリストから要素を削除するにはどうすればよいですか?

たとえば、次のような最初の要素で並べ替えられたリストがあります。

alist = [(0.7897897,'this is a foo bar sentence'),
(0.653234, 'this is a foo bar sentence'),
(0.353234, 'this is a foo bar sentence'),
(0.325345, 'this is not really a foo bar'),
(0.323234, 'this is a foo bar sentence'),]

望ましい出力は、最高の最初の項目を持つタプルを残します。次のようにする必要があります。

alist = [(0.7897897,'this is a foo bar sentence'),
(0.325345, 'this is not really a foo bar')]
4

1 に答える 1

8

alistがすでに最初の要素で最高から最低にソートされている場合:

alist = [(0.7897897,'this is a foo bar sentence'),
(0.653234, 'this is a foo bar sentence'),
(0.353234, 'this is a foo bar sentence'),
(0.325345, 'this is not really a foo bar'),
(0.323234, 'this is a foo bar sentence'),]

seen = set()
out = []
for a,b in alist:
    if b not in seen:
        out.append((a,b))
        seen.add(b)

out今です:

[(0.7897897, 'this is a foo bar sentence'),
 (0.325345, 'this is not really a foo bar')]
于 2013-02-26T13:16:17.677 に答える