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

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

如果鍵已經存在,如何在python中合并兩個字典,鍵的值不改變?

如果鍵已經存在,如何在python中合并兩個字典,鍵的值不改變?

慕神8447489 2023-09-19 17:33:04
我合并了兩個字典,但我希望如果字典中的鍵已經存在,則鍵的值不會更改?,F在,在我的代碼中,鍵的值發生了變化。我用了這個代碼a={'saya': 2,'menolak': 2,'omnibus': 3,'law': 3,'dan': 1,'tetap': 1,'di': 1,'sekolah': 1,'diperintahkan': 1,'untuk': 1,'tidak': 1,'layak': 1}b={'omnibus': 0,'law': 0,'meningkatkan': 0,'kesejahteraan': 0,'saya': 0,'setuju': 0,'diterapkan': 0}def add_dict(a,b):    a.update(b)    return aadd_dict(a,b)結果:{'saya': 0, 'menolak': 2, 'omnibus': 0, 'law': 0, 'dan': 1, 'tetap': 1, 'di': 1, 'sekolah': 1, 'diperintahkan': 1, 'untuk': 1, 'tidak': 1, 'layak': 1, 'meningkatkan': 0, 'kesejahteraan': 0, 'setuju': 0, 'diterapkan': 0}我想要這樣的結果:  {'saya': 2,     'menolak': 2,     'omnibus': 3,     'law': 3,     'dan': 1,     'tetap': 1,     'di': 1,     'sekolah': 1,     'diperintahkan': 1,     'untuk': 1,     'tidak': 1,     'layak': 1,     'meningkatkan': 0,     'kesejahteraan': 0,     'setuju': 0,     'diterapkan': 0}
查看完整描述

2 回答

?
慕斯王

TA貢獻1864條經驗 獲得超2個贊

您可以執行循環并在b將值添加到 之前檢查每個鍵a。


def add_dict(a,b):

    for key in b:

        if key not in a:

            a[key] = b[key]


    return a

編輯:如果您想保留某些值,b而不是即使a鍵已經存在,a您也可以添加第三個參數add_dict和鍵列表。然后在循環中,檢查鍵是否在此列表中,并使用值 fromb而不是aif it is。


結果是(為了清楚起見,我添加了 NumPy 風格的文檔字符串)


def add_dict(a,b, force_add=None):

    """

    Add key/value pairs from `b` into `a`. If a key is in `a` and in `b` its

    value is not added to `a`, unless it is in force_add`.


    Note: this modifies dictionary `a`


    Parameters

    ----------

    a : dict

        The first dictionary

    b : dict

        The second dictionary

    force_add : list, optional

        A list of keys in `b` whole values will be added to `a` even if `a`

        already has the key


    Returns

    -------

    dict

        The first dictionary after it was modified.

    """

    if force_add is None:

        force_add = []


    for key in b:

        if key not in a or key in force_add:

            a[key] = b[key]


    return a

現在如果你這樣做add_dict(b, a, force_add=["saya"])你會得到


{'omnibus': 0, 'law': 0, 'meningkatkan': 0, 'kesejahteraan': 0, 'saya': 2, 'setuju': 0, 'diterapkan': 0, 'menolak': 2, 'dan': 1, 'tetap': 1, 'di': 1, 'sekolah': 1, 'diperintahkan': 1, 'untuk': 1, 'tidak': 1, 'layak': 1}



查看完整回答
反對 回復 2023-09-19
?
慕的地8271018

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

您可以使用 setdefault ,它僅在密鑰不存在時更新:

for i in b:
    a.setdefault(i, b[i])print(a)

{'saya': 2, 'menolak': 2, 'omnibus': 3, 'law': 3, 'dan': 1, 'tetap': 1, 'di': 1, 'sekolah': 1, 'diperintahkan': 1, 'untuk': 1, 'tidak': 1, 'layak': 1, 'meningkatkan': 0, 'kesejahteraan': 0, 'setuju': 0, 'diterapkan': 0}
查看完整回答
反對 回復 2023-09-19
  • 2 回答
  • 0 關注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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