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']}

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

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']}
添加回答
舉報