iki sözlük oluştursam ve iki sözlükğü birbirine ekleyebilceğim ve aynı elemanlarının birleşebileceği bir metot var mı? veya fonksiyona cevirebilir miyim?
Merhaba, şöyle bir işini görür mü?
a = dict()
b = dict()
for k, v in a:
b[k] = v
# b, birleşmiş sözlüktür
Aklıma metod gelmiyor.
Sizin kodunuzu temel alarak şunu yazdım:
def birleştir(x, y):
for k, v in y.items():
x[k] = v
return x
a = {"a": 1, "b": 2, "c": 3}
b = {"c": 4, "d": 5, "e": 6}
c = birleştir(a, b)
print(c)
# Çıktı: {'a': 1, 'b': 2, 'c': 4, 'd': 5, 'e': 6}
3.9+
sozluk_1 | sozluk_2
3.5+
{**sozluk_1, **sozluk_2}
kodunuz çalışıyor fakat benim istediğim çıktıyı vermiyor.
çıktı şöyle olmalıydı:
{ ‘a’:1, ‘b’:2, ‘c’:7, ‘d’:5, ‘e’:6} yani aynı ifadeler arsında toplama yapmasını istiyorum aslında.
O zaman şu şekilde yapabilirsiniz:
def birleştir(x, y):
for k, v in y.items():
if k in x:
x[k] += v
else:
x[k] = v
return x
a = {"a": 1, "b": 2, "c": 3}
b = {"c": 4, "d": 5, "e": 6}
c = birleştir(a, b)
print(c)
# Çıktı: {'a': 1, 'b': 2, 'c': 7, 'd': 5, 'e': 6}
Yanlız, eğer veri türleri farklı ise hata verir(
...
a = {"a": 1 } # int
b = {"a": "1"} # str
c = birleştir(a, b)
|
V
Traceback (most recent call last):
...
TypeError: unsupported operand type(s) for +=: 'int' and 'str'
).
Isteklerinizi parca parca soylemek yerine bir kerede birazcik vakit ayirarak duzgun yazarsaniz bu kadar kisinin vaktini bosa harcamamis olursunuz.
İsteklerimi parça parça söylediğim bir durum yok . İlk başta belirttiğimin ne demek olduğunu anlamamış arkadaşlar açıklama yaptım . Eğer ilk yazdığım şeyi okursanız anlayacağınızı düşünüyorum.
Ilk basta belirttiginizin anahtarlari ayni olan sayilarin toplanmasi olarak yorumlanmasinin imkani yok. “Birazcik vakit ayirarak duzgun” yazmaktan kastim da buydu; buraya sorulari tanimadigimiz ve ne yapmaya calistigimizi bilmeyen insanlar okuyacakmis gibi yazmak lazim.