2016-10-11 11 views
-2

オリジナルPythonの辞書のリストを統合:これを行うための最も効率的な方法は何はPythonの辞書リストに

[ 
    {"keyword": "nike", "country":["usa","can"]}, 
    {"keyword": "newBalance", "country":["usa","can"]} 
    ] 

[ 
    {"keyword": "nike", "country":"usa"}, 
    {"keyword": "nike", "country":"can"}, 
    {"keyword": "newBalance", "country":"usa"}, 
    {"keyword": "newBalance", "country":"can"} 
    ] 

私はPythonのdictのリストを統合し、のような出力を取得したいと思い?

+0

辞書の統合方法を明示する必要があります。あなたのリストはソートされていますか?あなたは 'country'値を' keyword'キーの値に基づいて組み合わせていますか?それらの辞書に他の可能なキーはありますか?ソートされていない場合、隣接する辞書またはすべての辞書を同じ 'keyword'値で結合しますか? –

答えて

0

ここにいくつかの一般的なポインタがあります。私はあなたのためにすべてをコード化するつもりはありません。あなたが試したことの詳細とあなたが助けが必要な特定のコードを投稿した場合、私はもっと喜んで助けてくれるでしょう。

「キーワード」キーと同じ値を持つものだけを組み合わせているようです。そのキーの値をループし、そのキーに基づいて結合します。

上記のように複数の辞書を分割して組み合わせるには、まず「国」が空のリストにマップされる新しい辞書を作成する必要があります。次に、各辞書を検討する際に、その国の値が既にそのリストに入っているかどうかを確認します。そうでなければ、appendです。

-2
L = [ 
    {"keyword": "nike", "country":"usa"}, 
    {"keyword": "nike", "country":"can"}, 
    {"keyword": "newBalance", "country":"usa"}, 
    {"keyword": "newBalance", "country":"can"} 
    ] 


def consolidate(L): 
    answer = {} 
    for d in L: 
     if d['keyword'] not in answer: 
      answer['keyword'] = set() 
     answer['keyword'].add(d['country']) 

    retval = [] 
    for k,countries in answer.items(): 
     retval.append({'keyword':d['keyword'], 'country':list(countries)}) 
    return retval 
+0

44.6k repと何が起こっているのかというコメントなしでコードをダンプしますか? –

関連する問題