2016-03-30 8 views
0

2つの辞書を返す2つの関数があります。 第3の機能では、updateを使ってこれらの辞書をマージしようとしましたが、印刷中にNoneという結果が出ました。 誰も私の間違いを説明できますか?この方法は、Python 3.4で動作しないところでPythonで2つの辞書をマージできません

def third(): 
    a = first().copy() 
    return a.update(second()) 

def first(): 
    dict1 = { 
     one : [1, 2, 3] 
    } 
    return dict1 

def second(): 
    dict2 = { 
     two : [3, 4, 5] 
    } 
    return dict2 

def third(): 
    return first().update(second) 


print(third()) 
>>> None 

Iはまた、この方法を試した

def third(): 
    return dict(a.items() + b.items()) 
+6

'.update'は** in-place **です。新しい辞書は返されません。たとえば、 Python 3では 'list(a.items())'と書かれていますが、扱いにくいようです。 – jonrsharpe

+0

また、 'second 'を呼び出す必要があります。 'd = first(); d.update(second()) 'です。現在のところ、関数オブジェクトを参照しているだけで、関数オブジェクトが返すのではありません。 –

+4

私はあなたが望むものはすでにここで答えられていると思う:http://stackoverflow.com/questions/38987/how-can-i-merge-two-python-dictionaries-in-a-single-expression –

答えて

1

ビット変更されたバージョン:

def third(): 
    d = first().copy() 
    d.update(second()) 
    return d 
関連する問題