5

あなたが知っている、リストを回すために:

a = ["hello", "hello", "hi", "hi", "hey"]

リストに:

b = ["hello", "hi", "hey"]

あなたは単にこのようにそれをします:

b = list(set(a))

それは高速でpythonicです。

しかし、私がこのリストを回す必要がある場合はどうなりますか?

a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], 
     ["how", "what"]] 

に:

b = [["hello", "hi"], ["how", "what"]]

それを行うためのpythonicの方法は何ですか?

4

3 に答える 3

14
>>> a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], ["how", "what"]]
>>> set(map(tuple, a))
set([('how', 'what'), ('hello', 'hi')])
于 2012-06-29T12:09:18.670 に答える
1

それほど良くない別のアプローチです(ただし、注文可能である限り、ハッシュできないオブジェクトでも機能します)

>>> from itertools import groupby
>>> a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], ["how", "what"]]
>>> [k for k, g in groupby(sorted(a))]
[['hello', 'hi'], ['how', 'what']]
于 2012-06-29T12:19:31.193 に答える
0

元の順序を維持する必要があり、Python 2.7+ を使用している場合

>>> from collections import OrderedDict
>>> a = [["hello", "hi"], ["hello", "hi"], ["how", "what"], ["hello", "hi"], ["how", "what"]]
>>> list(OrderedDict.fromkeys(map(tuple, a)))
[('hello', 'hi'), ('how', 'what')]
于 2012-06-29T12:28:49.847 に答える