2017-01-11 4 views
0

こんにちは私はPythonで、このような大きなデータセットを持っている:一意のデータをソートして取得する最速の方法 - 最後のオカレンスが必要ですか?

data=[[2105,90], 
     [2115,100], 
     [2125,110], 
     [2135,120], 
     [2145,130], 
     [2155,140], 
     [2200,110], 
     [2115,109], 
     [2155,142]] 

とデータが最後に出現するからです私は結果が欲しいです。あなただけの辞書にdataを置くことができる

data=[[2105,90], 
     [2115,109], 
     [2125,110], 
     [2135,120], 
     [2145,130], 
     [2155,142], 
     [2200,110]] 
+4

あなたのためにコードを記述していただきたいようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ]と[ask]を確認してください。 – MooingRawr

+1

すべてをdictに送信する 'dict(data)' –

+0

データセットはソートされていますか? – user2314737

答えて

3

:例では、私は、2115年= 109と2155 = 142にしたい上

>>> data 
[[2105, 90], [2115, 100], [2125, 110], [2135, 120], [2145, 130], [2155, 140], [2200, 110], [2115, 109], [2155, 142]] 
>>> dict(data)[2115] 
109 
>>> dict(data)[2155] 
142 

辞書が一意キーを持っています。リストからエントリが追加されると、の既存のキーが更新されます。これにより、最後のオカレンスが取得されます。

-1

Red Black BST'sを使用して情報を保存できます。この方法では、少数のノードをトラバースするだけで済みます。これは、ツリーが半分に分割し続けるため、ほとんどの場合に便利です。

0

上記の両方のステートメントへの回答。私は3ファイルのデータを持っています。各セットには約1百万のファイルがあります。上記の例では、fileset1から6つの値、fileset2から1つの値、fileset3から1つの値を取得しています。

value={} 
for j in ['*1981*.txt','*1990*.txt','*1991*.txt']: 
    files=glob.glob(j) 
    files.sort() 
    for file in files: 
     inFile=open(file, 'r') 
     for line in inFile: 
      if cregexp2.match(line): 
       a=cregexp2.findall(line)[0] 
       value[a[0]]=a[1] 

これはある程度の時間がかかる作業が、1つのソリューションです。辞書の先端とソリューションは、この(ときの正規表現マッチ、私はデータを取得する)ようになります。より良い方法のアイデアを持っている人はいますか?

関連する問題