0

这是我拥有的数据结构

{"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
4

1 回答 1

0

希望这是您正在寻找的:

dict2 = {}
listElem = []
for key,value in dict1.iteritems():
    for listelem_dict in value:
        for sub_k, sub_v in listelem_dict.iteritems():
            if sub_k.startswith(('key1','key3')) and sub_v == '':
                continue
            else:
                listElem.append(listelem_dict)
                break
        break
    dict2[key] = listElem
print dict2

dict1 是下面提到的数据结构:在您给定的数据结构中,缺少一些逗号。假设缺少逗号是拼写错误。

dict1 = {"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' 
                     }
              ]
        }
于 2013-03-04T08:39:31.793 回答