Re: [Python-ideas] Dict joining using + and +=

Considering potential ambiguity, I suggest `d1.append(d2)` so we can have an additional argument saying `d1.append(d2, mode="some mode that tells how this function behaviours")`. If we are really to have the new syntax `d1 + d2`, I suggest leaving it for `d1.append(d2, mode="strict")` which raises an error when there're duplicate keys. The semantics is nature and clear when two dicts have no overlapping keys.

I really like this idea. It’s not obvious how to deal with key conflicts and I don’t think replacing by the keys of the second dict is that obviously a good behaviour. With the actual merging ({**d1, **d2}) it works the same as when you build a custom dict so it’s usually known by people. If we add a new syntax/function, we might think of better behaviors. IMO, and I might be wrong, merging two mapping having common keys is an error. Thus we would need a clean way to combine two dicts. A simple way could be adding a key function that takes the values of each merged dict and returns the new value : d1 = ... d2 = ... d1.merge(d2, key=lambda values: values[0]) That’s an example, I don’t like the syntax. On Fri 1 Mar 2019 at 07:09, fhsxfhsx <fhsxfhsx@126.com> wrote:

I really like this idea. It’s not obvious how to deal with key conflicts and I don’t think replacing by the keys of the second dict is that obviously a good behaviour. With the actual merging ({**d1, **d2}) it works the same as when you build a custom dict so it’s usually known by people. If we add a new syntax/function, we might think of better behaviors. IMO, and I might be wrong, merging two mapping having common keys is an error. Thus we would need a clean way to combine two dicts. A simple way could be adding a key function that takes the values of each merged dict and returns the new value : d1 = ... d2 = ... d1.merge(d2, key=lambda values: values[0]) That’s an example, I don’t like the syntax. On Fri 1 Mar 2019 at 07:09, fhsxfhsx <fhsxfhsx@126.com> wrote:
participants (2)
-
Adrien Ricocotam
-
fhsxfhsx