2016-08-25 70 views
-4

我有這樣的詞典列表:合併Python字典和增加值的類似值

[{'A': 2, 'B': u'cat'}, {'A': 1, 'B': u'dog'}, {'A': 3, 'B': u'rabbit'}, {'A': 4, 'B': u'cat'}, {'A': 4, 'B': u'dog'}, {'A': 8, 'B': u'rabbit'}] 

我想把它轉換成:

[{'cat':'6'},{'dog':'5'}, {'rabbit':'11'}] 

我試圖做這樣的事情:

super_dict = collections.defaultdict(set) 
     for d in ss: 
      for k, v in d.iteritems(): 
       super_dict[k].add(v) 

但它返回:

{'A': set([2, 1, 3, 4, 4, 7]), 'B': set([u'cat', u'dog', u'rabbit'])} 
+2

SO不是代碼寫入服務。你應該至少表現出最小的努力來解決這個問題。 – DeepSpace

+0

@DeepSpace很抱歉。剛剛添加了我的做法。 – user1630729

回答

1
>>> my_list = [{'A': 2, 'B': u'cat'}, {'A': 1, 'B': u'dog'}, {'A': 3, 'B': u'rabbit'}, {'A': 4, 'B': u'cat'}, {'A': 4, 'B': u'dog'}, {'A': 8, 'B': u'rabbit'}] 
>>> new_dict = {} 
>>> for item in my_list: 
...  new_dict[item['B']] = new_dict.get(item['B'], 0) + item['A'] 
... 
>>> new_dict 
{u'dog': 5, u'rabbit': 11, u'cat': 6}