Python 按键合并两个词典

Python 按键合并两个词典,python,list,dictionary,Python,List,Dictionary,我知道有人问过这个问题,但我找不到任何将值附加到列表的内容,而不是创建一个列表。我有两个具有相同值的词典: dictionary1 = {'1':'one', '2':'two', '3':'three'} dictionary2 = {'1':['uno'], '2':['dos'], '3':['tres']} 我需要它来归还这个: combined = {'1':['one','uno'] '2':['two','dos'] '3':['three',tres']} 到目前为止,我尝

我知道有人问过这个问题,但我找不到任何将值附加到列表的内容,而不是创建一个列表。我有两个具有相同值的词典:

dictionary1 = {'1':'one', '2':'two', '3':'three'}
dictionary2 = {'1':['uno'], '2':['dos'], '3':['tres']}
我需要它来归还这个:

combined = {'1':['one','uno'] '2':['two','dos'] '3':['three',tres']} 
到目前为止,我尝试的所有方法都返回了以下结果:

combined = {'1':['one'['uno']] '2':['two'['dos']] '3':['three'[tres']]}
其中包含嵌套列表。如何将dictionary 1的值附加到dictionary 2列表中?请帮帮我,我知道这很简单,但我不知道怎么做。多谢各位

这是我的密码:

    combined = {key:[dictionary1[key], dictionary2[key]] for key in dictionary1}

实际上,你的代码已经正确了

>>> dictionary1 = {'1':'one', '2':'two', '3':'three'}
>>> dictionary2 = {'1':'uno', '2':'dos', '3':'tres'}
>>> combined = {key:[dictionary1[key], dictionary2[key]] for key in dictionary1}
>>> combined
{'3': ['three', 'tres'], '2': ['two', 'dos'], '1': ['one', 'uno']}
你确定除此之外你没有做其他事情吗

dictionary1 = {'1':'one', '2':'two', '3':'three'}
dictionary2 = {'1':'uno', '2':'dos', '3':'tres'}


z = zip(zip(dictionary1.keys(), dictionary2.keys()),
        zip(dictionary1.values(), dictionary2.values()))

dual = {}

for el in z:
    dual[el[0][0]] = el[1]


print(list(dual.items()))
输出

[('2',('2','dos'),('1',('1','uno'),('3',('3','tres'))]

只需从
字典2
的值中检索第0个索引,因为它们都是长度为1的列表

否则,这将起作用:

combined = {key:[dictionary1[key]] + dictionary2[key] for key in dictionary1}

这基本上是从
dictionary1
的值中创建一个单元素列表,并将其与已经是列表的
dictionary2
的值相结合。

Erm。。这段代码应该可以工作,并给你你想要的。你的代码返回你想要的。@DSM给我的组合={'1':['one',['uno']]'2':['two',['dos']]'3':['three',[tres']}我不明白为什么。还有别的办法吗?@April:恕我直言,我不相信你。:-)如果将前两行复制并粘贴到控制台中,然后将
组合={key:etchera
行,你会得到你的目标。也许你的
字典2
错了,用列表而不是字符串作为值。发布完整的代码后,有些东西你没有向我们展示。我刚刚意识到我的一个字典有值作为列表,所以我需要的是将新值附加到该列表中。我该怎么做?如果例如,ary2将列表作为值,那么您可以这样做:
组合={key:[dictionary1[key]]+dictionary2[key]作为dictionary1}
。如果dictionary1也将列表作为值保存,则删除
dictionary1[key]周围的
[/code>
。我们只是在这里连接列表。如何使用for循环在单独的行中进行连接?
combined = {key:[dictionary1[key]] + dictionary2[key] for key in dictionary1}