2017-07-05 24 views
-3

次のように私は辞書を持っている:スプリット複数の辞書に辞書

P_ID V1 V2  V3 
100 slow slow high 
100 slow high high 
104 medium high high 
107 slow high high 
107 slow high high 
107 slow high high 
    ... 
    ... 

だから私はP_IDの値に基づいて、複数の辞書には、この辞書を分割したいです。

ディック1:

P_ID V1 V2  V3 
100 slow slow high 
100 slow high high 

ディック2:

P_ID V1 V2  V3 
104 medium high high 

ディック3:このような何か

P_ID V1 V2  V3 
107 slow high high 
107 slow high high 
107 slow high high 
+0

3つの新しい辞書、古い辞書を超えるループを作成し、ifとelseと、その後に行わ場合のシリーズを使用して、適切な辞書に値を追加します。 – JoshKopen

+2

「私は次のような辞書があります。あなたの辞書はどのように見えるのですか? –

+0

ようこそStackOverflowへ。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [on topic](http://stackoverflow.com/help/on-topic)および[How to Ask](http://stackoverflow.com/help/how-to-ask)をここで適用してください。 StackOverflowは、デザイン、コーディング、リサーチまたはチュートリアルサービスではありません。テキスト表ではなくコードを表示し、問題を指定します。 – Prune

答えて

0

はこれを試してみてください。他の方法もあるかもしれませんが、私はこれがもっと簡単だと思います。

d = [{'V1': 'slow', 'V2': 'slow', 'V3': 'high', 'P_ID': 100}, 
    {'V1': 'slow', 'V2': 'high', 'V3': 'high', 'P_ID': 100}, 
    {'V1': 'medium', 'V2': 'high', 'V3': 'high', 'P_ID': 104}, 
    {'V1': 'slow', 'V2': 'high', 'V3': 'high', 'P_ID': 107}, 
    {'V1': 'slow', 'V2': 'high', 'V3': 'high', 'P_ID': 107}, 
    {'V1': 'slow', 'V2': 'high', 'V3': 'high', 'P_ID': 107}] 

keys = set([e['P_ID'] for e in d]) 

for k in keys: 
    print [x for x in d if x['P_ID'] == k] 
    print("") 

オンラインデモ:https://repl.it/JOn7

+0

これはPython 2.7では動作しますが、Python 3.6では動作しません! –

+0

おそらく、最初のprintステートメントがかっこを「見つけられません」...コードに入れてもう一度やり直してください。 –

+0

はい、私は気付きましたが、問題はこの関数からです:set([e ['p_ID'] in d]] –