4

辞書 {key : [abccd]} があり、各キー (この場合は (a,b,d)) に対応する一意の値のみを出力したい場合、これを行う最も効率的な方法は何ですか?各要素をループして、その数を維持していますか?

4

7 に答える 7

3

あなたの例のように要素がソートされている場合; あなたが使用することができますitertools.groupby()

from itertools import groupby

print " ".join([k for k, group in groupby(d['key']) if len(list(group)) == 1])
# -> a b d
于 2013-06-20T16:41:33.573 に答える
2

1 つのオプションとして、collections.Counterを使用します

from collections import Counter
d = {'k': ['a', 'b', 'c', 'c', 'd']}
c = Counter(d['k'])
print [k for k in c if c[k] == 1]
['a', 'b', 'd']
于 2013-06-20T16:32:30.017 に答える
0

リストがソートされていると仮定します。

>>> L = [1, 1, 2, 3, 4, 4, 4, 5]
>>> [e for i, e in enumerate(L) if e == L[i-1] and i < len(L)-1 and not e == L[i+1]]
[1, 4]
于 2013-06-20T17:43:50.883 に答える
0

Counter次から使用できますcollections

>>> d = {'key': ['a', 'b', 'c', 'c', 'd']}
>>> 
>>> from collections import Counter
>>> 
>>> new_dict = Counter(d['key'])
>>> new_dict
Counter({'c': 2, 'a': 1, 'b': 1, 'd': 1})
>>> [elem for elem in new_dict.keys() if new_dict[elem] == 1]
['a', 'b', 'd']
于 2013-06-20T16:24:58.263 に答える
-1

set()a を使用して、各リスト内のすべての一意の要素を見つけることができます。

for key in mydict:
    uniques = set(mydict[key])
于 2013-06-20T16:26:30.317 に答える
-2

Python では、セット (セットには繰り返し要素を含めることはできません) を利用して、各キーで一意の要素を見つけてから、セットをリストに戻すことができます。

for key in dict:
    print list(set(dict[key]))
于 2013-06-20T16:25:12.237 に答える