Rumah  >  Soal Jawab  >  teks badan

Tolong bantu saya mentafsir sekeping kod Python ketuhanan, terima kasih! !

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学习ing2690 hari yang lalu798

membalas semua(3)saya akan balas

  • 为情所困

    为情所困2017-06-30 09:57:56

    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

    balas
    0
  • 淡淡烟草味

    淡淡烟草味2017-06-30 09:57:56

    函数的作用合并两个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

    balas
    0
  • 阿神

    阿神2017-06-30 09:57:56

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

    balas
    0
  • Batalbalas