辞書の内容を入れ替えたい。
{"A": {"a1": [[10.0, 5.0], [7.0, 7.0], [1.0, 5.0], [20.0, 30.0]], "a2": [[50.0, 50.0], [55.0, 60.0]], "a3": [[40.0, 100.0], [100.0, 200.0], [100.0, 140.0], [200.0, 190.0]], "a4": [[50.0, 70.0], [140.0, 130.0], [160.0, 150.0], [200.0, 180.0]], "a5": [[100.0, 110.0], [180.0, 210.0], [60.0, 50.0], [200.0, 190.0]] } }
という辞書dfがある。
この辞書の
[[10.0, 5.0], [7.0, 7.0], [1.0, 5.0], [20.0, 30.0]]
や
[[50.0, 50.0], [55.0, 60.0]]
の要素(*とする)の奇数の部分と偶数の部分を分解して、
[10.0,7.0, 1.0,20.0]・・・①と[5.0,7.0, 5.0, 30.0]・・・②という形にして、
①と②の配列を使った計算結果xを*の部分に入れたい。
for ky, vl in df.items(): sub_dict={} for k,v in vl.items(): a_li = [] b_li = [] for i in range(len(v)): a_li.append(v[i][0]) b_li.append(v[i][1]) #①と②の配列を使った計算結果xを取得するAメソッド d = {k:A(a_li,b_li)} sub_dict[k] = d sub1_dict={} for i,j in sub_dict.items(): sub1_dict[i] = j element[ky]=sub1_dict print(element)
とコードを書くと、
{‘A’: {‘a1’: {‘a1’:0.04},‘a2’: {‘a2’:0.01},‘a3’: {‘a3’:0.05}, ‘a4’:{‘a4’:0.06} , ‘a5’:{‘a5’:0.07} }}
という形になり、{‘a1’: {‘a1’:0.04}の部分が冗長になる。
理想のアウトプットは、
{‘A’: {‘a1’:0.04,‘a2’:0.01,‘a3’:0.05,’a4’:0.06,‘a5’:0.07}} の形にすることである。
コードのどの部分を修正すればいいのだろうか?

回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/09 06:27
2018/05/09 06:28
2018/05/09 06:30