2016-10-10 6 views
1
a = [{'a':{'a':1}}, {'b':{'b':1}}, {'c':{}}] 
b = [{'a':{'a':1,'b':0}}, {'b':{'a':1}}] 

ここで私はdictの2つのリストを持っています。それはまた仕事、辞書の2つのリストを比較して、すべてのキーと値を持つ新しいリストを作成します。

newlist = [{'a':{'a':1,'b':0}}, {'b':{'a':1,'b':1}}, {'c':{'a':0,'b':0}}] 
+0

に答える与えます。これまでに試したことのある特定のコードも投稿してください。 – Brian

+0

私は欠けているキーと値を見つける辞書の完全なリストを生成したい。私はこれのような初期化された空のリストを持っています= {{'a':{}}、{'b':{}}、{'c':{}}]そしてb = [{'} a ':{' a ':1、' b ':0}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}で、 }}、{'b':{'a':0、 'b':1}}] –

+0

あなたはこれのようなものが欲しいですか? 'A = [{'a':{}}、{'b':{}}、{'c':{}}]; B = [{'a':{'A':1}}、{'b':{'B':1}} ''結果リストC = [{' a ':{' A ': 1、B ':0}}、{' b ':{' A ':0、' B ':1}}、{' c ':{' A ':0、' B ':0}}] ] ' – fabianegli

答えて

0
A_list = [{'a':{'A':1}}, {'b':{}}] 
B_list = [{'b': {'B': 1}}, {'a': {'A': 0}}] 
list_with_all_keys = [{'a':{}}, {'b':{}}, {'c':{}}] 
new_lod = [{k:{'A':(1 if k in A_list and 'A' in A_list[k] and A_list[k]['A'] is 1 else 0), 
       'B':(1 if k in B_list and 'B' in B_list[k] and B_list[k]['B'] is 1 else 0)}} 
      for k in [list(n.keys())[0] for n in list_with_all_keys]] 

new_lodは、私が起こっていただきまし明確にするために、いくつかの大文字を追加したことを、[{'a': {'B': 0, 'A': 0}}, {'b': {'B': 0, 'A': 0}}, {'c': {'B': 0, 'A': 0}}]

注その後、次のとおりです。私は、これらを比較し、このような新しいリストを生成したいですA/A_listB/B_listの代わりに、小文字のabのみを使用する場合は、

追記

私は、リスト内の辞書の最初のレベルで重複するキーを取得しないと仮定します。私はこれが正しい仮定だと思います。なぜなら、必要な出力は、第1レベルの辞書のこれらの重複キーを崩壊させるからです。したがって、リストをスキップして、辞書のリストの代わりに1つの辞書を使用することができます。これは、式をわずかに単純化します。しかし、あなたのアプリケーションに応じて、2つのリスト、辞書、またはセットを比較または組み合わせる方が、より簡単な方法があるかもしれません。それをやっての

A_dict = {'a':{'A':1}, 'b':{}} 
B_dict = {'b': {'B': 1}, 'a': {'A': 0}} 
dict_with_all_keys = {'a':{}, 'b':{}, 'c':{}} 
# a dictionary solution with no list 
new_dict = {k:{'A':(1 if k in A_dict and 'A' in A_dict[k] and A_dict[k]['A'] is 1 else 0), 
       'B':(1 if k in B_dict and 'B' in B_dict[k] and B_dict[k]['B'] is 1 else 0)} 
      for k in dict_with_all_keys} 
0

より読みやすい方法が

a = [{'a':{'a':1}}, {'b':{'b':1}}, {'c':{}}] 
b = [{'a':{'a':1,'b':0}}, {'b':{'a':1}}] 

result = {} 

for c in a + b: 
    for key,value in c.items(): 
     result[key] = dict() 
     result[key]['a'] = value.get('a', 0) 
     result[key]['b'] = value.get('b', 0) 

print(result) 

だろうあなたはあなたがこの機能のうち、必要なもの機能について具体的にする必要があり
{'c': {'a': 0, 'b': 0}, 'a': {'a': 1, 'b': 0}, 'b': {'a': 1, 'b': 0}}

+0

あなたのソリューションは教育的価値はありますが、OPで必要なフォーマットは無視されます。 – fabianegli

関連する問題