Python使用另一个字典值更新字典的列表值
我有两本字典,分别是dict1和dict2。我应该使用dict2值更新(或创建新的dict3)dict1列表值,因为dict1列表值是dict2的键。 注意-我只需要使用Python2.7。 谢谢你的帮助Python使用另一个字典值更新字典的列表值,python,python-3.x,python-2.7,dictionary,Python,Python 3.x,Python 2.7,Dictionary,我有两本字典,分别是dict1和dict2。我应该使用dict2值更新(或创建新的dict3)dict1列表值,因为dict1列表值是dict2的键。 注意-我只需要使用Python2.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':[Ep
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]
def最终版本(dict1、dict2):
dict3={}
对于dict1.iteritems()中的k,v:
如果第2条中有v:
如果第3条中有k:
dict3[k].追加(dict2[v])
其他:
dict3[k]=dict2[v]
其他:
dict3[k]。追加(v)
返回指令3
印刷品:
{'key1': ['Alpha', 'Beta', 'Gamma'], 'key2': ['Epsilon', 'v9'], 'key3': ['Beta', 'Zeta', 'Delta', 'v11'], 'key4': ['Gamma', 'Epsilon', 'v0']}
您可以使用来迭代列表并将每个项作为函数的参数传递。然后使用可以从数组中删除所有None
元素。若要构建最终列表,可以使用
代码:
也可以在不调用任何函数的情况下完成:
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
循环的主题应该做到这一点:
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']}
您没有问任何问题;特别是,您发布的代码中没有相关信息。我应该更具体一些,很抱歉@Scott HunterThanks提供了答案,所有答案都很完美,我仍然是初学者,所以我正在尝试理解每种方法!!@Andrej,@Olvin,@ann谢谢Andrej!!
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
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']}