Давайте выясним, что здесь происходит!
In [7]: x.items()
Out[7]: [(1, 3), (2, 2)]
In [8]: y.items()
Out[8]: [(1, 3), (3, 1)]
In [9]: x.items() + y.items()
Out[9]: [(1, 3), (2, 2), (1, 3), (3, 1)]
In [10]: dict(x.items() + y.items())
Out[10]: {1: 3, 2: 2, 3: 1}
items()
создает список (ключ, значение) кортежей, а +
объединяет списки.Затем вы можете сделать этот список обратно в словарь, который будет иметь дело с дублирующимися ключами, взяв последнее значение с данным ключом.Поскольку на этот раз это дублирующее значение, это не имеет значения, но оно может:
In [11]: z = {1:4, 3:1}
In [12]: dict(x.items() + z.items())
Out[12]: {1: 4, 2: 2, 3: 1}
В этом случае запись 1: 3 отбрасывается ...
(Не ясно, чтоВаша аналогия с полиномами: ... Если вы действительно хотите представить многочлены, которые складываются арифметически, вы можете проверить numpy class poly1d или collections.Counter
описывается @adw.)