Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python使用另一个字典值更新字典的列表值_Python_Python 3.x_Python 2.7_Dictionary - Fatal编程技术网

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

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和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':[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']}