Rumah > Soal Jawab > teks badan
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? ?
为情所困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
tuple
Berkumpul bersama
Maksud parameter dict
淡淡烟草味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
阿神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?