连接不同字典的两个值并在Python中删除后者

时间:2013-03-04 06:04:14

标签: python list dictionary python-2.7

这是我拥有的数据结构

{"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' 
         }
      ]
}

现在,
我想连接一个字典的值,如果这个字符为true,那么除了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

1 个答案:

答案 0 :(得分: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' 
                     }
              ]
        }