2016-05-17 20 views
3

私は辞書のリストをPythonで持っています。ここでは、髪の色と競争のある執拗な例があります。辞書のリストを辞書の別のリストに変換する

some_list = [ 
     {'blond': 3, 'race': 'WHITE'}, 
     {'black': 4, 'race': 'WHITE'}, 
     {'light brown': 6, 'race': 'WHITE'}, 
     {'black': 2, 'race': 'AFRICAN_AMERICAN'}, 
     {'blond': 1, 'race': 'AFRICAN_AMERICAN'}, 
     {'dark brown': 1, 'race': 'AFRICAN_AMERICAN'} 
] 

髪の色は、キーの一つであり、髪の色の値は、人々が特定のレースのためにその髪の色を持っているどのように多くのカウントです。私は毛髪の色がどれくらいあるかわからないし、どれくらいの種族があるかは分かっていない。

some_list = [ 
     {'blond': 3, 'race': 'WHITE'}, 
     {'black': 4, 'race': 'WHITE'}, 
     {'light brown': 6, 'race': 'WHITE'}, 
     {'dark brown': 0, 'race': 'WHITE'}, 
     {'black': 2, 'race': 'AFRICAN_AMERICAN'}, 
     {'blond': 1, 'race': 'AFRICAN_AMERICAN'}, 
     {'dark brown': 1, 'race': 'AFRICAN_AMERICAN'}, 
     {'light brown': 0, 'race': 'AFRICAN_AMERICAN'} 
] 

私は考えることができない私の人生のために:私は結果が与えられたレースのためにリストされていない色の0カウントが含まれるようにすべてのレースのためのすべての髪の色の数を含めるには、このリストを変換したいですこれを簡単に行うための単純な「Python」方法の確かにこれにトリックがありますか?誰もがこれを解決するsuccient方法を知っていますか?

+1

は、あなたがしようとしたものを、私たちを表示します。私も、あなたが選んだデータ構造はちょっと変わっていると思います。 – L3viathan

+0

あなたは反復することができ、 'set(..)'を使って固有の色や種族を見つけ、 'itertools.product(..)'を使ってすべての組み合わせを見つけることができます。 'some_list'にエントリがない場合は0を埋めます。あなたがどこにいるのか教えてください。 – SuperSaiyan

+0

それは私が立ち往生しているのですが...私はすでに一意のリストを持っています...最初のコードスニペットに示されているように...しかし、私は繰り返して、与えられたために欠けている髪の色を埋める良い方法を知らないレース。 itertools.product(..)はどのように役立ちますか? – Brent

答えて

1

私が正しくあなたの質問を理解していて、あなたが外部のライブラリを使用することができるならば、あなたはpandasでこれを実現できます。

import pandas as pd 

df = pd.DataFrame(some_list, index=None) 

df = df.groupby(by='race').count().transpose() 

for col in df.columns: 
    rw = df.loc[df[col] == 0] 
    dic = {rw.index[0]: 0, 'race': col} 
    some_list.append(dic) 

# output: 
# some_list = [ 
#  {'blond': 3, 'race': 'WHITE'}, 
#  {'black': 4, 'race': 'WHITE'}, 
#  {'light brown': 6, 'race': 'WHITE'}, 
#  {'black': 2, 'race': 'AFRICAN_AMERICAN'}, 
#  {'blond': 1, 'race': 'AFRICAN_AMERICAN'}, 
#  {'dark brown': 1, 'race': 'AFRICAN_AMERICAN'}, 
#  {'light brown': 0, 'race': 'AFRICAN_AMERICAN'}, 
#  {'dark brown': 0, 'race': 'WHITE'} 
# ] 
関連する問題