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

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

當鍵已經存在時更新字典內部的字典

當鍵已經存在時更新字典內部的字典

MMTTMM 2022-07-26 10:33:36
我知道已經存在這個問題的變體,并且我已經完成了它們。具體來說,我遇到的問題是here和here。我已經嘗試使用列出的所有解決方案,但它確實對我不起作用,因為在我的情況下,我必須遍歷另一個字典,而且很多時候 dict 的 dict 中的鍵也將是相同的(在這種情況下值應該變成一個列表。讓我用一個例子來說明:可以說entity_sentiment_dictionary是我要附加到的字典 fromentity_sentiment_int_int_dictentity_sentiment_dictionary = {  'name': {'userid1': 0.0}, 'Aditya': {'userid1': 0.0}, 'Glen': {'5dad13fc54aeb500078637e0': -0.10000000149011612}, 'Kenta': {'5dad13fc54aeb500078637e0': 0.0}, 'Keita': {'5dd23a18c7949300087d8d88': 0.0}, 'Ganchan': {'5dd23a18c7949300087d8d88': 0.0}, 'Anna': {'5dd23a18c7949300087d8d88': 0.0}, 'Joe': {'5dd23a18c7949300087d8d88': 0.8999999761581421}}entity_sentiment_int_int_dict = {  'name': {'userid1': 0.1},                                  'Aditya': {'userid2': 0.3}}當我更新時,結果應該是這樣的:entity_sentiment_dictionary = {  'name': {'userid1': [0.0,0.1]},     'Aditya': {'userid1': 0.0, 'userid2': 0.3},     'Glen': {'5dad13fc54aeb500078637e0': -0.10000000149011612},     'Kenta': {'5dad13fc54aeb500078637e0': 0.0},     'Keita': {'5dd23a18c7949300087d8d88': 0.0},     'Ganchan': {'5dd23a18c7949300087d8d88': 0.0},     'Anna': {'5dd23a18c7949300087d8d88': 0.0},     'Joe': {'5dd23a18c7949300087d8d88': 0.8999999761581421}}這是我在嘗試了我可以在網上找到的所有方法后所達到的目標:for key in entity_sentiment_int_int_dict.keys():        if key in entity_sentiment_dictionary:            for k in entity_sentiment_dictionary.keys():                if key==k:                    entity_sentiment_dictionary[key][k] = dict(entity_sentiment_int_int_dict[key])        else:            entity_sentiment_dictionary[key] = entity_sentiment_int_int_dict[key]我覺得我快到了,需要對嵌套的 for 循環進行更改。感謝您提供任何幫助,并且還建議使用任何其他方式來獲得預期結果。
查看完整描述

2 回答

?
躍然一笑

TA貢獻1826條經驗 獲得超6個贊

這是一個解決方案:


for k, v in entity_sentiment_int_int_dict.items():

    if k in entity_sentiment_dictionary.keys():

        entry = entity_sentiment_dictionary[k]

        for update_key, update_val in v.items():

            if update_key in entry:

                if isinstance(entry[update_key], list):

                    entry[update_key].append(update_val)

                else:

                    entry[update_key] = [entry[update_key], update_val]

            else:

                entry[update_key] = update_val


# with 'out' as desired output dict from OP:

entity_sentiment_dictionary == out  # True

完整的代碼重現:


entity_sentiment_dictionary = {  'name': {'userid1': 0.0},

 'Aditya': {'userid1': 0.0},

 'Glen': {'5dad13fc54aeb500078637e0': -0.10000000149011612},

 'Kenta': {'5dad13fc54aeb500078637e0': 0.0},

 'Keita': {'5dd23a18c7949300087d8d88': 0.0},

 'Ganchan': {'5dd23a18c7949300087d8d88': 0.0},

 'Anna': {'5dd23a18c7949300087d8d88': 0.0},

 'Joe': {'5dd23a18c7949300087d8d88': 0.8999999761581421}}


entity_sentiment_int_int_dict = {  'name': {'userid1': 0.1},

                                  'Aditya': {'userid2': 0.3}}


out = {'name': {'userid1': [0.0,0.1]},

     'Aditya': {'userid1': 0.0, 'userid2': 0.3},

     'Glen': {'5dad13fc54aeb500078637e0': -0.10000000149011612},

     'Kenta': {'5dad13fc54aeb500078637e0': 0.0},

     'Keita': {'5dd23a18c7949300087d8d88': 0.0},

     'Ganchan': {'5dd23a18c7949300087d8d88': 0.0},

     'Anna': {'5dd23a18c7949300087d8d88': 0.0},

     'Joe': {'5dd23a18c7949300087d8d88': 0.8999999761581421}}


for k, v in entity_sentiment_int_int_dict.items():

    if k in entity_sentiment_dictionary.keys():

        entry = entity_sentiment_dictionary[k]

        for update_key, update_val in v.items():

            if update_key in entry:

                if isinstance(entry[update_key], list):

                    entry[update_key].append(update_val)

                else:

                    entry[update_key] = [entry[update_key], update_val]

            else:

                entry[update_key] = update_val

斷言測試和實際輸出:


print(f"Result matches desired output: {entity_sentiment_dictionary == out}")

# Result matches desired output: True


entity_sentiment_dictionary


{'name': {'userid1': [0.0, 0.1]},

 'Aditya': {'userid1': 0.0, 'userid2': 0.3},

 'Glen': {'5dad13fc54aeb500078637e0': -0.10000000149011612},

 'Kenta': {'5dad13fc54aeb500078637e0': 0.0},

 'Keita': {'5dd23a18c7949300087d8d88': 0.0},

 'Ganchan': {'5dd23a18c7949300087d8d88': 0.0},

 'Anna': {'5dd23a18c7949300087d8d88': 0.0},

 'Joe': {'5dd23a18c7949300087d8d88': 0.8999999761581421}}


查看完整回答
反對 回復 2022-07-26
?
嚕嚕噠

TA貢獻1784條經驗 獲得超7個贊

這可以滿足您的要求??梢赃M一步優化。

for key in entity_sentiment_int_int_dict.keys():    if key in entity_sentiment_dictionary.keys():        if entity_sentiment_dictionary[key].keys() == entity_sentiment_int_int_dict[key].keys():
            temp = []
            temp.append(next(iter(entity_sentiment_dictionary[key].values())))
            temp.append(next(iter(entity_sentiment_int_int_dict[key].values())))
            entity_sentiment_dictionary[key][next(iter(entity_sentiment_dictionary[key].keys()))] = temp        else:
            entity_sentiment_dictionary[key].update(entity_sentiment_int_int_dict[key])
    else:
        entity_sentiment_dictionary.update(entity_sentiment_int_int_dict[key])

輸出 

http://img1.sycdn.imooc.com//62df52b000018de005240149.jpg

查看完整回答
反對 回復 2022-07-26
  • 2 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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