これは私が持っているデータ構造です
{"A": [
{ 'key1 a' : 'value1',
'key2 a' : 'A'
'key3 a' : 'xyz'
},
{ 'key1 a' : '',
'key2 a' : 'B'
'key3 a' : ''
},
{ 'key1 a' : 'value3',
'key2 a' : 'value4'
'key3 a' : 'xyz'
}
],
"B": [
{ 'key1 b' : 'value1',
'key2 b' : 'A'
'key3 b' : 'xyz'
},
{ 'key1 b' : '',
'key2 b' : 'C'
'key3 b' : ''
},
{ 'key1 b' : 'value3',
'key2 b' : 'value4'
'key3 b' : 'xyz'
}
]
}
ここで、
key2以外のすべてのフィールドが空である辞書の値を連結したいと思います。これが当てはまる場合、key2の値は前の辞書key2と連結され、それ自体を削除する必要があります。
期待される出力は
{"A": [
{ 'key1 a' : 'value1',
'key2 a' : 'A B'
'key3 a' : 'xyz'
},
{ 'key1 a' : 'value3',
'key2 a' : 'value4'
'key3 a' : 'xyz'
}
],
"B": [
{ 'key1 b' : 'value1',
'key2 b' : 'A C'
'key3 b' : 'xyz'
},
{ 'key1 b' : 'value3',
'key2 b' : 'value4'
'key3 b' : 'xyz'
}
]
}
私がこれまでにやったことは
for k,v in final_dict.iteritems():
i=0
j=len(v)
while i < j:
if((not(v[i]["key1 a"])) and (not(v[i]["key3 a"]))):
v[i-1]["key2 a"] = v[i-1]["key2 a"] + v[i]["key2 a"]
v.pop(i)
del v[i]
j=j-1
else:
i=i+1