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

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

如何將多個字典中的數據與重復鍵合并?

如何將多個字典中的數據與重復鍵合并?

慕無忌1623718 2022-07-19 16:39:07
我有兩個字典:dict1 = {'a': '2', 'b': '10'}dict2 = {'a': '25', 'b': '7'}我需要將同一鍵的所有值保存在新字典中。到目前為止我能做的最好的是:defaultdict(<class 'list'>, {'a': ['2', '25'], 'b': ['10', '7']})dd = defaultdict(list)for d in (dict1, dict2):    for key, value in d.items():        dd[key].append(value)print(dd)這并不能完全解決問題,因為理想的結果是:a = {'dict1':'2', 'dict2':'25'}b = {'dict2':'10', 'dict2':'7'}我也可能想使用與初始字典名稱相同的新字典鍵
查看完整描述

2 回答

?
Helenr

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

您的主要問題是您試圖跨越字符串值和變量名之間的實現邊界。這幾乎總是糟糕的設計。相反,從所有標簽作為字符串數據開始:


table = {

    "dict1": {'a': '2',  'b': '10'},

    "dict2": {'a': '25', 'b': '7'}

}

...或者,就您的原始帖子而言:


table = {

    "dict1": dict1,

    "dict2": dict2

}

從這里,您應該能夠反轉級別以獲得


invert = {

    "a": {'dict1': '2',  'dict2': '25'},

    "b": {'dict2': '10', 'dict2': '7'}

}

這足以讓您的處理到達需要的地方嗎?將數據保存在這樣的綜合字典中,將更容易根據需要迭代子字典。


查看完整回答
反對 回復 2022-07-19
?
烙印99

TA貢獻1829條經驗 獲得超13個贊

正如@Prune建議的那樣,將結果構建為嵌套字典會更容易:


{'a': {'dict1': '2', 'dict2': '25'}, 'b': {'dict1': '10', 'dict2': '7'}}

這可以通過dict理解來實現:


{k: {"dict%d" % i: v2 for i, v2 in enumerate(v1, start=1)} for k, v1 in dd.items()}

如果您更喜歡在沒有理解的情況下這樣做,您可以這樣做:


result = {}

for k, v1 in dd.items():

    inner_dict = {}


    for i, v2 in enumerate(v1, start=1):

        inner_dict["dict%d" % i] = v2


    result[k] = inner_dict

注意:這假設您希望始終保持"dict1"、"dict2"、... 鍵結構。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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