0

こんにちは私はこのようなデータを含む反論があります:

{1301: Counter({'total': 18, 
               'inDevelopment': 13, 
                'isDuplicate': 2, 
                'inAnalysis': 2,
                'inQuest': 1}),
 1302: Counter({'total': 15, 
                'inDevelopment': 9, 
                 'inQuest': 1, 
                 'inValidation': 1, 
                  'inAnalysis': 1,
                  'ongoing' : 3})}

繰り返しなしでリスト内の値を取得するにはどうすればよいですか。つまり、既存の値をすべて抽出したいのですが、それらをすべて取得するのではなく、複製しないようにしたいので、次の代わりに:

 [' inDevelopment','isDuplicate','inAnalysis', 'inQuest','total', 'inDevelopment','inQuest', 'inValidation','inAnalysis', 'ongoing']

出力は次のようになります。

['total','inDevelopment','isDuplicate','inAnalysis','inQuest','inValidation','ongoing']

どんな助けでも大歓迎です、ありがとう!

4

2 に答える 2

1

演算子Counterを使用してオブジェクトを結合できます。|

>>> from collections import Counter
>>> a = Counter('123')
>>> b = Counter('44144')
>>> a
Counter({'2': 1, '3': 1, '1': 1})
>>> b
Counter({'4': 4, '1': 1})
>>> a | b
Counter({'4': 4, '2': 1, '3': 1, '1': 1})
>>> list(a | b)
['2', '3', '1', '4']

Python 2.x の場合

>>> from collections import Counter
>>> d = {1301: Counter({'total': 18,
    ...
...                   "ongoing" : 3})}
>>> list(reduce(lambda a,b:a|b, d.values()))
['inAnalysis', 'inQuest', 'inDevelopment', ' inDevelopment', 'inValidation', 'ongoing', 'isDuplicate', 'total']

Python 3.x の場合

>>> from collections import Counter
>>> from functools import reduce
>>> d = ...
>>> list(reduce(lambda a,b:a|b, d.values()))
['inValidation', 'total', ' inDevelopment', 'inDevelopment', 'isDuplicate', 'ongoing', 'inQuest', 'inAnalysis']

アップデート

次のものも使用できますset.union

>>> list(set().union(*d.values()))
['inValidation', 'inDevelopment', 'isDuplicate', 'total', 'ongoing', 'inAnalysis', 'inQuest', ' inDevelopment']

これは、1 つのコードで Python 2.x/3.x の両方で機能します。

于 2013-09-26T14:45:22.923 に答える
0

np.uniqueと一緒import numpy as npに使用できます

>>> d = {1301: Counter({'total': 18,
                'inDevelopment': 13,
                 'isDuplicate': 2,                 'inAnalysis': 2,
                'inQuest': 1}),
  1302: Counter({'total': 15,                 'inDevelopment': 9,
                  'inQuest': 1,
                  'inValidation': 1,
                   'inAnalysis': 1,
                   "ongoing" : 3})}

与える

>>> np.unique(list(d[1301]|d[1302]))

array(['inAnalysis', 'inDevelopment', 'inQuest', 'inValidation',
       'isDuplicate', 'ongoing', 'total'], 
      dtype='|S13')
于 2013-09-26T15:01:02.453 に答える