2016-03-30 34 views
0

İki sözlükten oluşan iki işlevi var. Üçüncü işlevde, bu sözlükleri update kullanarak birleştirmeyi denedim ancak yazdırma sırasında None sonucu aldım. Hatamı açıklayan var mı? Bu şekilde Python 3.4 çalışmaz aradaPython'da iki sözlük birleştirilemiyor

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 

Ben de bu yolu denedim

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

'.update' ** yerinde **, yeni bir sözlük döndürmüyor. Ör. Python 3 listesinde (a.items()) 'dır, ancak garip görünüyor. – jonrsharpe

+0

Ayrıca, * '* saniye '' i çağırmanız gerekir, ör. 'd = ilk(); d.update (ikinci()) '. Şu anda sadece işlev nesnesine atıfta bulunuyorsunuz, döndürdüğü dict değil. –

+4

Bence istediğin şey burada zaten cevaplanmış: http://stackoverflow.com/questions/38987/how-can-i-merge-two-python-dictionaries-in-a-single-expression –

cevap

1

Biraz değiştirilmiş versiyonu:

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