Tolong bantu saya mentafsir sekeping kod Python ketuhanan, terima kasih! !
学习ing
学习ing 2017-06-30 09:55:56
0
3
829
def combine_dicts(a, b):
    if b is None:
        return a
    return dict(a.items() + b.items() +
                [(k, combine_dicts(a[k], b[k])) for k in set(b) & set(a)])

a dan b sepatutnya kedua-duanya adalah data jenis dict Bagaimana untuk memahami fungsi ini, terutamanya pulangan terakhir? ?

学习ing
学习ing

membalas semua(3)
为情所困

Beginilah ia ditulis dalam Python 2. Datang ke Python versi 3.6:

def dict_deep_merge(a, b):
  if not b:
    return a
  return {**a, **b,
    **{k: dict_deep_merge(a[k], b[k])
       for k in set(a) & set(b)}}

Sepatutnya lebih cekap. Semua yang lain hampir sama.

Ia bukan kod peringkat dewa, dan juga tidak sukar untuk difahami. Hanya menggabungkan nilai secara rekursif dengan kunci yang sama. Apa yang anda perlu tahu:

  • kaedah item dict

  • Penambahan
  • tuple

  • Berkumpul bersama

  • Maksud parameter dict

淡淡烟草味
函数的作用合并两个dict
比如
a = {'a': {'A': 1}, 'b': 1}
b = {'a': {'B': 1}}
合并成
{'a': {'A': 1, 'B': 1}, 'b': 1}

set(b) & set(a)是取a,c的key交集,如上a,b的key交集为a, 再递归运行子dict
阿神

Tanyakan soalan, adakah terdapat sesuatu yang salah dengan kod tersebut Jika nilai dalam kunci yang sama ialah rentetan, adakah item tersebut akan melaporkan ralat?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan