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

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

Python 使用另一個字典值更新字典的列表值

Python 使用另一個字典值更新字典的列表值

白衣非少年 2023-01-04 16:47:53
我有兩本詞典 dict1 和 dict2。我應該使用 dict2 值更新(或創建新的 dict3)dict1 列表值,因為 dict1 列表值是 dict2 的鍵。注意-我只需要使用 Python 2.7。感謝幫助 ?。?!dict1 = {'key1':[v1,v2,v3], 'key2':[v5,v9], 'key3':[v2,v6,v4,v11],'key4':[v3,v5,v0]}dict2 = {'v1':[Alpha], 'v2':[Beta], 'v3':[Gamma], 'v4':[Delta], 'v5':[Epsilon], 'v6':[Zeta]Output neededdict3 = {'key1':[Alpha,Beta,Gamma], 'key2':[Epsilon,v9], 'key3':[Beta,Zeta,Delta,v11],'key4':[Gamma,Epsilon,v0]def final(dict1,dict2):  dict3 = {}  for k,v in dict1.iteritems():    if v in dict2:      if k in dict3:        dict3[k].append(dict2[v])      else:        dict3[k] = dict2[v]    else:      dict3[k].append(v)  return dict3
查看完整描述

3 回答

?
一只斗牛犬

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

dict1 = {'key1':['v1','v2','v3'], 'key2':['v5','v9'], 'key3':['v2','v6','v4','v11'],'key4':['v3','v5','v0']}


dict2 = {'v1':['Alpha'], 'v2':['Beta'], 'v3':['Gamma'], 'v4':['Delta'], 'v5':['Epsilon'], 'v6':['Zeta']}



dict3 = {k:[dict2.get(vv, [vv])[0] for vv in v] for k, v in dict1.items()} # or dict1.iteritems() in case of Python2


print(dict3)

印刷:


{'key1': ['Alpha', 'Beta', 'Gamma'], 'key2': ['Epsilon', 'v9'], 'key3': ['Beta', 'Zeta', 'Delta', 'v11'], 'key4': ['Gamma', 'Epsilon', 'v0']}



查看完整回答
反對 回復 2023-01-04
?
回首憶惘然

TA貢獻1847條經驗 獲得超11個贊

您可以使用map()迭代列表并將每個項目作為函數的參數傳遞dict.get()。然后使用filter()您可以從數組中刪除所有None元素。要構建最終列表,您可以使用sum().

代碼:


def final(dict1, dict2):

    dict3 = {}

    for k, v in dict1.iteritems():

        dict3[k] = sum(filter(None, map(dict2.get, v)), [])


    return dict3

也可以在不調用任何函數的情況下完成:


def final(dict1, dict2):

    dict3 = {}

    for k, v in dict1.iteritems():

        tmp = []

        for i in v:

            if i in dict2:

                tmp += dict2[i]

            else:

                tmp.append(i)

        dict3[k] = tmp


    return dict3


查看完整回答
反對 回復 2023-01-04
?
蝴蝶不菲

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

這些for循環應該可以解決問題:


dict1 = {'key1':['v1','v2','v3'],

         'key2':['v5','v9'],

         'key3':['v2','v6','v4','v11'],

         'key4':['v3','v5','v0']}

dict2 = {'v1':['Alpha'],

         'v2':['Beta'],

         'v3':['Gamma'],

         'v4':['Delta'],

         'v5':['Epsilon'],

         'v6':['Zeta']}

dict3 = {}


for key in dict1.keys():

    for v in dict1[key]:

        temp = [dict2[i] if i in dict2.keys() else v for i in dict1[key]]

        for i,e in enumerate(temp):

            if type(e) == type([]):

                temp[i] = e[0]

        dict3.update({key:temp})


print(dict3)

輸出:


{'key1': ['Alpha', 'Beta', 'Gamma'],

 'key2': ['Epsilon', 'v9'],

 'key3': ['Beta', 'Zeta', 'Delta', 'v11'],

 'key4': ['Gamma', 'Epsilon', 'v0']}


查看完整回答
反對 回復 2023-01-04
  • 3 回答
  • 0 關注
  • 233 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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