亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

是否有任何節奏曲的方法來組合兩個切分(增加出現在兩個切分中的鍵的值)?

是否有任何節奏曲的方法來組合兩個切分(增加出現在兩個切分中的鍵的值)?

慕村9548890 2019-06-19 10:37:41
是否有任何節奏曲的方法來組合兩個切分(增加出現在兩個切分中的鍵的值)?例如,我有兩個字典:Dict A: {'a': 1, 'b': 2, 'c': 3}Dict B: {'b': 3, 'c': 4, 'd': 5}我需要一種“合二為一”的節奏曲方式,結果是:{'a': 1, 'b': 5, 'c': 7, 'd': 5}也就是說:如果一個鍵出現在兩個數據中,那么添加它們的值,如果它只出現在一個DECT中,則保留它的值。
查看完整描述

3 回答

?
明月笑刀無情

TA貢獻1828條經驗 獲得超4個贊

使用collections.Counter:

>>> from collections import Counter>>> A = Counter({'a':1, 'b':2, 'c':3})>>> B = Counter({'b':3, 'c':4, 'd':5})
>>> A + BCounter({'c': 7, 'b': 5, 'd': 5, 'a': 1})

計數器基本上是dict,所以您仍然可以對它們執行通常使用該類型的所有其他操作,例如對它們的鍵和值進行迭代。


查看完整回答
反對 回復 2019-06-19
?
白衣染霜花

TA貢獻1796條經驗 獲得超10個贊

一種更通用的解決方案,也適用于非數字值:

a = {'a': 'foo', 'b':'bar', 'c': 'baz'}b = {'a': 'spam', 'c':'ham', 'x': 'blah'}r = dict(a.items() + b.items() +
    [(k, a[k] + b[k]) for k in set(b) & set(a)])

或者更普通的:

def combine_dicts(a, b, op=operator.add):
    return dict(a.items() + b.items() +
        [(k, op(a[k], b[k])) for k in set(b) & set(a)])

例如:

>>> a = {'a': 2, 'b':3, 'c':4}>>> b = {'a': 5, 'c':6, 'x':7}>>> import operator>>> print combine_dicts(a, b, operator.mul)
{'a': 10, 'x': 7, 'c': 24, 'b': 3}


查看完整回答
反對 回復 2019-06-19
?
慕少森

TA貢獻2019條經驗 獲得超9個贊

>>> A = {'a':1, 'b':2, 'c':3}>>> B = {'b':3, 'c':4, 'd':5}>>> c = {x: A.get(x, 0) + B.get(x, 0) for x in set(A).union(B)}
>>> print(c){'a': 1, 'c': 7, 'b': 5, 'd': 5}


查看完整回答
反對 回復 2019-06-19
  • 3 回答
  • 0 關注
  • 430 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號